2016-10-21 6 views
0

私は別のエンドポイントに送信するリクエストを処理します。ファイル名のエンコーディングを除いてすべて正常に機能します(典型的でない場合は、壊れた文字が付属しています)。FileBodyにcharset UTF8を設定することはできますか?

私は文字列アイテムのUTF-8を設定する方法を理解しましたが、FileBodyクラスのための方法はわかりません。

送信するファイルにUTF-8を設定するにはどうすればよいですか?ありがとう!

何もないが、作品の場合、私は

Map parameters = req.getParameterMap(); 

UploadedFile uploadedFile = (UploadedFile) parameters.get("file"); 

File serverFile = new File(uploadedFile.getServerFileName()); 
File clientFile = new File(serverFile.getParent() + java.io.File.separator + uploadedFile.getClientFileName()); 
serverFile.renameTo(clientFile); 

MultipartEntityBuilder builder = MultipartEntityBuilder.create(); 
builder.addPart("file", new FileBody(clientFile)); 
builder.addTextBody("field1", "Načrt", ContentType.create("text/plain", Charset.forName("UTF-8"))); 
+0

ここで最初の回答を確認してください。何か助けがありますか? http://stackoverflow.com/questions/7916674/text-file-encoding-to-utf-8 ファイルを作成すると、UTF-8で作成することができます。 –

+0

ありがとうございます!それは良いようだが、私は別の解決策を見つけた。 –

答えて

0

ありがとうございます。

解決策が見つかりました。それを見てください。

Map parameters = req.getParameterMap(); 

UploadedFile uploadedFile = (UploadedFile) parameters.get("file"); 

File serverFile = new File(uploadedFile.getServerFileName()); 
File clientFile = new File(serverFile.getParent() + java.io.File.separator + uploadedFile.getClientFileName()); 
serverFile.renameTo(clientFile); 

MultipartEntityBuilder builder = MultipartEntityBuilder.create(); 

// fix <========================== 
builder.setCharset(Charset.forName("UTF-8")).setMode(HttpMultipartMode.BROWSER_COMPATIBLE); 

builder.addPart("file", new FileBody(clientFile)); 
builder.addTextBody("field1", "Načrt", ContentType.create("text/plain", Charset.forName("UTF-8"))); 
0

の下に私のJavaコードの例を添付、あなたのmainの開始時にこのコードのスニペットを使用してプログラムによって処理されるすべてのファイルの全体のエンコーディングを変更することができます。

System.setProperty("file.encoding", "UTF-8"); 
Field charset = Charset.class.getDeclaredField("defaultCharset"); 
charset.setAccessible(true); 
charset.set(null, null); 

これは、LinuxとWindowsの両方でファイルを読み書きするアプリケーションに使用する必要がありました。このアプリケーションでは、ファイルとやりとりするためにいくつかの影付きライブラリを使用していました。

+0

ありがとう、私は別の解決策を見つけた。私は以下の答えを掲示した。 –

関連する問題