当我尝试上传一个文件名包含瑞典字符Ӧ Ӓ å时,我遇到了编码问题(我猜是这个原因)。在Windows上上传文件时,小程序工作得很好,但在Mac OS上却不行。
当我在服务器端打印文件名时,即Domino服务器上,它会变得混乱,并在Mac上显示方框。但是,当我通过new String(filename.getBytes("utf-8"))
将编码设置为UTF-8时,Win和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();
为文件名和输入流设置参数
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();
}
在向服务器发布结束时
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
可能的问题有哪些呢?谢谢。