2011-06-29 7 views
0

Excelのファイルをアップロードするために使用されるフォームの1つに、春のアプリケーションがあります。アラビア語のファイル名が疑問符に変換されました

アプリケーションはファイルをハードデスクに保存し、ユーザーに再度ダウンロードするためのリンクを提供します。

ファイル名がすべて英語で書かれている場合は問題ありませんが、ファイル名にアラビア文字が含まれている場合、ファイルのアラビア文字は疑問符に変換されます。

この問題は文字エンコードに関連していることは明らかですが、どこが問題なのかを正確に検出することはできません。

  • オペレーティングシステム:CentOSに
  • アプリケーションサーバ:server.xmlのTomcatの
  • コネクタコンフィグ

    [コネクタポート= "8009ここ

    は、システム構造及び構成であります"protocol =" AJP/1.3 "redirectPort =" 8443 "URIEncoding =" UTF-8 "]

+0

ファイルシステムのエンコーディングとは何ですか? VMのデフォルトのエンコーディングは何ですか? –

+1

ファイル名が正しく受信されたかどうかを確認するために、ファイル名をいくつかのJSP(UTF-8を使用)に出力してみてください。あなたはクライアントファイルシステムのエンコーディングも知っておくべきです。ブラウザが無効な文字を含むファイル名を受け取ると、名前が変更されます。 – helios

答えて

-3

アラビア語のランはシステムの言語をサポートしていないと思いますので、これを試してみてください

バイト[] utf8Bytes =( "アラビア文字列")。getBytes( "arabic"); 引数=新しいオブジェクト[] {新しい文字列(utf8Bytes、 "UTF8")}; System.out.println(引数);これらの2つのページを通じて

+0

「arabic」という名前の文字エンコードはありません。 –

+0

これは間違っています – Sudantha

0
  1. あなたがする必要がありますアラビア文字の文字セットを知っている。

  2. わからない場合は、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(); 

は、自分自身をお楽しみください。

関連する問題