2016-10-21 5 views
0

Ich verarbeite eine Anfrage, die ich dann an einen anderen Endpunkt sende. Alle funktionieren gut außer der Codierung für Dateinamen (es kommt mit beschädigten Zeichen, wenn sie nicht typisch sind).Ist es möglich, Zeichensatz UTF8 für FileBody zu setzen?

Ich habe herausgefunden, wie UTF-8 für String-Elemente festlegen, aber ich weiß nicht, wie das für FileBody-Klasse zu tun.

Wie kann ich UTF-8 für die Datei, die ich sende, einstellen? Vielen Dank!

Ich legte Beispiel meines Java-Code unter

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

Überprüfen Sie die erste Antwort hier .. ist es eine Hilfe? http://stackoverflow.com/questions/7916674/text-file-encoding-to-utf-8 Es sagt, wenn Sie die Datei erstellen, können Sie es mit UTF-8 –

+0

vielen Dank erstellen! es sieht gut aus, aber ich habe eine andere Lösung gefunden. –

Antwort

0

Danke an alle.

Ich fand eine Lösung für mich Fall. Sieh es an.

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

Wenn nichts anderes hilft, können Sie die gesamte Codierung aller von Ihrem Programm mit diesem Code-Snippet zu Beginn Ihrer main behandelten Dateien ändern:

Ich musste dies für eine App verwenden, die Dateien in Linux und Windows lesen/schreiben musste, die einige zwielichtige Bibliotheken verwendeten, um mit den Dateien zu interagieren.

+0

danke, ich habe eine andere Lösung gefunden. Ich habe die Antwort unten gepostet. –

Verwandte Themen