當我嘗試上傳帶有瑞典字符的文件名的文件時,我正面臨編碼問題(我猜)。當我在Windows上上傳文件時,Applet工作正常,但在Mac OS上不上傳。Java小程序 - 無法將默認平臺編碼更改爲其他
文件名被搞砸時打印它在服務器端,這是一個Domino服務器,並顯示在Mac上盒,但是當我通過new String(filename.getBytes("utf-8"))
將編碼設置爲UTF-8這表明?
在雙贏和Mac。
更新:
以下是代碼片段:
設置請求參數和發佈
...
request.setParameter("Name", tmpAtt.getFileName());
...
HttpURLConnection connection ...
connection.setRequestProperty("Content-Type", "multipart/form-data; charset=UTF-8; boundary=" + boundary);
if (os == null) os = connection.getOutputStream();
文件名和文件的InputStream
request.setParameter(fileUploadFieldName, tmpAtt.getFilePath(), fi);
public void setParameter(String name, String filename, InputStream is) throws IOException {
boundary();
writeName(name);
write("; charset=utf-8; filename=\"");
write(filename);
write('"');
newline();
write("Content-Type:");
String type = connection.guessContentTypeFromName(filename);
if (type == null) type = "application/octet-stream";
writeln(type);
newline();
pipe(is, os);
newline();
}
設置PARAM在年底發佈到服務器
public InputStream post() throws IOException {
boundary();
writeln("--");
printOS(os);
os.close();
InputStream iis = connection.getInputStream();
printIS(iis);
return iis;
}
在寫入OutputStream上的字節以發送請求時獲取此輸出。名字對我來說很好。
------------------------------hxre3intl6yy-17eufpccwtxc89pbvyg0iwe3i
Content-Disposition: form-data; name="Name
Räpörå.log
------------------------------hxre3intl6yy-17eufpccwtxc89pbvyg0iwe3i
Content-Disposition: form-data; name="Name2
------------------------------hxre3intl6yy-17eufpccwtxc89pbvyg0iwe3i
Content-Disposition: form-data; name="APPROVALSTATUS
可能是什麼問題。
謝謝。
我試圖將其編碼爲UTF-8,但沒有工作,之前我並沒有編碼任何東西。文件名字符串的損壞似乎是合乎邏輯的,但是當我在帖子之前打印該值時,它似乎很好。 – Deam 2011-06-07 13:47:11
@ user330281:可能問題畢竟在文件系統方面。嘗試使用命令行參數-Dfile.encoding = UTF8運行問題(在eclipse運行配置中配置該參數)。總而言之,文件名中的非ASCII字符似乎仍然存在問題。我剛剛注意到非ASCII文件名被損壞,而只是在Windows PC和Linux NAS之間複製文件。 – 2011-06-07 14:14:46
thx。對不起,我忘了提及我在瀏覽器中使用小程序,我想我不需要將上述參數放在eclipse的運行配置中,可能是瀏覽器中applet的解決方法。我應該通過將上面的參數作爲命令arg創建jar還是應該是