Java konvertieren von Windows-1252 zu UTF-8, einige Buchstaben sind falsch

Erhalte ich Daten aus einer externen Microsoft SQL 2008 Datenbank (ich Abfragen mit MyBatis). In theroy ich Daten Codierung auf "Windows-1252".

Ich versuche dekodierten Daten mit diesem code:

String textoFormado = ...Wert von MyBatis... ;

String s = new String(textoFormado.getBytes("Windows-1252"), "UTF-8");

Fast alle der String wird korrekt entschlüsselt. Aber einige Buchstaben mit acents nicht.

Beispiel:

  1. Ich Empfangen von Daten Basis dieser Zeichenfolge: "�vila"
  2. Ich mit dem obigen code und diese machen diesen String: "�?vila"
  3. Ich erwartet, dass diese Zeichenfolge: "Ávila"
Brechen Sie Ihre Linie in zwei Aussagen, so können Sie einen Blick auf die intermediate-Schnur. Das wird Ihnen helfen, zu sehen, was die Ursache des Problems sein könnte.
Danke. Aber ich habe versucht String s = new String(mistring.getBytes("Windows-1252")); aber das Ergebnis ist das gleiche.
Die variable textoFormado ist bereits eine Zeichenfolge, die Sie einfach verwenden können, in Ihrem Programm. Warum denken Sie müssen das Kodieren und Dekodieren es wieder?
Da diese Zeichenfolge den text "Ã�vila" (es ist recived aus der Datenbank von MyBatis) und ich brauche "Ávila".
Wie sind Sie mit dem abrufen der String von MyBatis? Das ist, wo Sie benötigen, um mit einem charset-Konvertierung von Windows-1252 zu UTF-16 (Java native String encoding). Auch wenn Sie getBytes() sollten Sie angeben Windows-1252 statt UTF-8 im String Konstruktor, da Sie nicht den Umgang mit UTF-8-bytes, die an alle.

InformationsquelleAutor Ramon | 2014-04-15

Schreibe einen Kommentar