Konvertieren von UTF-8 kodierten string auf der menschlichen lesbaren string
Wie konvertieren in UTF8-strings zu lesbaren strings.
Wie : â (in UTF8) €
Versuchte ich mit Charset aber nicht funktioniert.
- Was Sie versuchen, zu erreichen? Wo der string herkommt?
- Ich will einfach nur, um zu konvertieren unlesbare Zeichenfolgen, die im UTF8-format zu reable string (ASCII oder andere lesbaren Zeichensatz).
- Ich habe diese Art von strings aus anderen Fragen'
- Das ist nicht "UTF-8" aber völlig kaputt und unreparierbar Daten. Strings haben keine Codierungen.
- Können Sie einige unlesbar UTF8-Strings?
- Welche Art der Ausgabe sind Sie für? Für die Beispiel-Eingabe, sind Sie auf der Suche nach einem Ausgang von
Uu?oaABC
? - können Sie mir sagen, wie zu konvertieren "â" to "€"?
- ich habe diese aus dieser Webseite : coderstoolbox.net/string
- Sie können nicht konvertieren "â" auf "€". Sie können konvertieren "âBPH" to "€" aber... aber Sie brauchen nicht zu, solange Sie nicht die Kodierung screwups, wie dies in den ersten Platz.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Kodierung einer Zeichenkette nach ISO-8859-15 mit
byte[] b = "Üü?öäABC".getBytes("ISO-8859-15");
dann sind Sie Decodierung bei UTF-8System.out.println(new String(b, "UTF-8"));
. Sie müssen Dekodieren Sie die gleiche Weise mit ISO-8859-15.System.out.println(new String(b, "ISO-8859-15"));
. Es dekodiert einen ISO-8859-15 kodierten string nach ISO-8859-15-decoder. Die andere Linie dekodiert einen ISO-8859-15 kodierten string mit UTF-8. Natürlich funktioniert es nicht.Dies ist nicht "UTF-8", aber komplett gebrochen und katastrophales Daten. Strings haben keine Codierungen. Es macht keinen Sinn zu sagen "UTF-8" - string in diesem Kontext. String ist eine Folge von abstrakten Zeichen - es besteht keine Codierungen, außer als eine interne Implementierung detail, das ist nicht unsere Sorge und nicht im Zusammenhang zu deinem problem.
byte[]
, nicht als String.Einen string in java ist bereits eine unicode-Darstellung. Wenn Sie rufen Sie eine der getBytes Methoden erhalten Sie eine codierte Darstellung (als bytes, also binäre Werte) in einer bestimmten Zeichencodierung ISO-8859-15 in deinem Beispiel. Wenn Sie möchten, zu konvertieren, das byte-array wieder in eine unicode-Zeichenfolge, die Sie tun können, dass mit einer der string-Konstruktoren akzeptieren ein byte-array, wie Sie es Taten, aber Sie müssen dies tun, mit der genau die gleiche Codierung das byte-array wurde ursprünglich erzeugt. Nur dann können Sie wandeln es wieder in ein unicode-string (die hat keine Codierung, und es muss nicht ein).
Hüten Sie sich vor der Codierung-weniger Methoden, sowohl die string-Konstruktor und der getBytes-Methode, da Sie die Verwendung der Standard-Kodierung der Plattform der code ausgeführt wird, der möglicherweise nicht das, was Sie erreichen wollen.
Ich denke, das problem hier ist, dass Sie unter der Annahme einer java-String kodiert ist, mit dem, was du angegeben hast im Konstruktor. Es nicht. Es ist in UTF-16.
So,
"Üü?öäABC".getBytes("ISO-8859-15")
konvertiert ein UTF-16-string nach ISO-8859-15, und dann immer die byte-Darstellung, die.Wenn Sie möchten, um den Menschen lesbaren format in Ihre Eclipse-Konsole, halten Sie es einfach wie es ist (UTF-16) - und nennen
System.out.println("Üü?öäABC")
, weil Sie Ihre Eclipse-Konsole decodiert den string und zeigt ihn als UTF-16.Sie versuchen zu Dekodieren, die ein byteArray codiert mit "ISO-8859-15" auf "UTF-8" format