2010-12-14 9 views
3

Ich habe ein Servlet, das eine Zeichenfolge mit UTF-8-Codierung sendet. Ich habe auch einen Client mit Apache httpcomponents Bibliothek geschrieben.UTF-8-Codierung Problem mit Servlet und Apache HttpClient

Mein Problem ist die Antwort in utf-8 zu lesen. Einige Sonderzeichen wie ñ oder ç werden nicht richtig gelesen. Wenn ich den Server mit einer HTML-Seite teste, die eine Anfrage sendet, ist die Zeichenfolge korrekt und die Codierung ist UTF-8 ohne BOM.

einige Auszüge: Servlets

response.setContentType ("application/json; charset=UTF-8"); 
PrintWriter out = response.getWriter(); 
out.write (string); 

Kunde

entity = response.getEntity(); 
entity.getContentEncoding(); //returns null 
resultado = EntityUtils.toString (entity, HTTP.UTF_8); //Some characters are wrong 

hat das gleiche Problem jemand hatte?

Gelöst: Sorry Jungs der Client und Server funktionierten korrekt. Ich schreibe eine Android App und es scheint, dass der Logcat (wo ich die Nachrichten drucke) nicht UTF-8-Codierung unterstützt.

Antwort

7

Haben Sie

versucht
response.setCharacterEncoding("utf-8"); 

anstelle der Codierung über setContentType der Einstellung? Es sollte keinen Unterschied nach der Dokumentation machen, aber wer weiß ...

Stellen Sie außerdem sicher, dass Sie nirgends in Ihrem Code aufgerufen haben, bevor Sie die Zeichencodierung festlegen, da letztere keinen Effekt hätte In diesem Fall.

+0

Ja :(

+1

Sie, ob das Problem auf der Servlet-Seite oder auf der Clientseite identifizieren – Thomas

+1

Ja, Sie sollten es mit so etwas wie Wireshark überprüfen. – Hiro2k

3

Stellen Sie sicher, dass Strom Bytes in UTF-8-Format:

out.write((yourstring.getBytes("UTF-8")); 
0

StandardCharsets.UTF_8 mit EntityUtil verwendet werden, um die richtige Codierung zu bekommen.

Hier ein Beispiel Schnipsel:

HttpEntity entity = response.getEntity(); 
String webpage = EntityUtils.toString(entity, StandardCharsets.UTF_8); 
Verwandte Themen