Java 转换为问号的阿拉伯文文件名
我有一个spring应用程序,它是用来上传excel文件的表单之一 该应用程序将文件保存在硬盘上,并提供一个链接供用户再次下载 如果文件名是用英语写的,一切正常,但如果文件名包含阿拉伯字符,则文件阿拉伯字符将转换为问号 很明显,这个问题与字符编码有关,但我无法准确地发现问题出在哪里 以下是系统结构和配置:Java 转换为问号的阿拉伯文文件名,java,encoding,centos,Java,Encoding,Centos,我有一个spring应用程序,它是用来上传excel文件的表单之一 该应用程序将文件保存在硬盘上,并提供一个链接供用户再次下载 如果文件名是用英语写的,一切正常,但如果文件名包含阿拉伯字符,则文件阿拉伯字符将转换为问号 很明显,这个问题与字符编码有关,但我无法准确地发现问题出在哪里 以下是系统结构和配置: 操作系统:Centos 应用服务器:Tomcat 在server.xml中配置连接器 [Connector port=“8009”protocol=“AJP/1.3”redirectPort
- 操作系统:Centos
- 应用服务器:Tomcat
- 在server.xml中配置连接器 [Connector port=“8009”protocol=“AJP/1.3”redirectPort=“8443”URIEncoding=“UTF-8”]
System.out.println(参数) 浏览这两页: -乔尔·斯波尔斯基 及 也许这些会有帮助
// output stream
ByteArrayOutputStream bout = new ByteArrayOutputStream();
// input stream
InputStream in = new FileInputSteam("filePath");
// reading buffer
byte[] buffer = new byte[1024];
// 1st read
int bytes = in.read(buffer, 0, buffer.length());
while(bytes != -1) {
// write buffer
bout.write(buffer);
// re-load buffer
bytes = in.read(buffer, bytes, buffer.length());
}
String yourText = bout.toString(Charset.forName("YOUR_CHARSET"));
// close stream or use JSE7 try-catch-with-resource
in.close();
bout.close();
尽情享受。您的文件系统编码是什么?您的虚拟机的默认编码是什么?尝试将文件名输出到某个JSP(使用UTF-8)以查看文件名是否得到了很好的接收。您还应该了解客户机文件系统编码。如果浏览器收到带有无效字符的文件名,它将更改名称。没有名为
阿拉伯语的字符编码。