阿拉伯文件名转换为问号

时间:2011-06-29 12:40:31

标签: java encoding centos

我有一个弹簧应用程序,其中一种形式是用来上传excel文件。

应用程序将文件保存在硬盘上,并提供指向用户的链接以便再次下载。

如果文件名是用英文写的,那么每件事都可以,但如果文件名包含阿拉伯字符,则文件阿拉伯字符会被转换为问号。

很明显,这个问题与字符编码有关,但我无法确切地发现问题的确切位置。

这是系统结构和配置:

  • 操作系统:Centos
  • 应用程序服务器:Tomcat
  • server.xml中的连接器配置

    [连接器端口=“8009”协议=“AJP / 1.3”redirectPort =“8443”URIEncoding =“UTF-8”]

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

  1. 你必须知道阿拉伯字符的字符集。

  2. 如果您不知道,可以尝试使用UTF-16。

  3. 使用的代码如下:

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

    享受自己。

答案 2 :(得分:-3)

我认为它的阿拉伯语lang不支持你的系统语言,所以试试这个

byte [] utf8Bytes =(“Arabic String”)。getBytes(“arabic”); argument = new Object [] {new String(utf8Bytes,“UTF8”)}; 的System.out.println(参数);