centos 转换成问号的阿拉伯文文件名称

q5iwbnjs  于 2022-11-07  发布在  其他
关注(0)|答案(4)|浏览(151)

我有一个Spring应用程序在其中一个形式的使用应该上传一个excel文件。
应用程序将文件保存在硬桌面上,并提供一个链接,让用户再次下载。
如果文件名是用英语写的,一切都可以,但如果文件名包含阿拉伯字符,文件阿拉伯字符将转换为问号。
很明显,这个问题与字符编码有关,但我不能检测到问题到底出在哪里。
以下是系统结构和配置:

  • 操作系统:琴托斯
  • 应用程序服务器:雄猫
  • server.xml中的连接器配置

[连接器端口=“8009”协议=“AJP/1.3”重定向端口=“8443”URI编码=“UTF-8”]

68bkxrlz

68bkxrlz2#

1.你必须知道什么是阿拉伯字符的字符集。
1.如果您不知道,可以尝试使用UTF-16。
要使用的代码如下:

// 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();

玩得开心点

9o685dep

9o685dep3#

在Windows控制面板中,转到“区域选项”,在“管理”选项卡中,选择“非Unicode程序的语言”,选择区域阿拉伯语。

lbsnaicq

lbsnaicq4#

  • 我认为它阿拉伯语言不支持您的系统语言,所以试试这个 *。

(“阿拉伯字符串”).getBytes(“阿拉伯”);参数= new对象[]{新字符串(utf8 Bytes,“UTF8”)};系统输出打印输入(参数);

相关问题