String encoding-Konvertierung UTF-8, SHIFT-JIS
Variablen verwendet:
- JavaSE-6
- Keine frameworks
Angesichts dieser string-input, der ピーター・ジョーズ
codiert ist in UTF-8, ich habe Probleme beim konvertieren der sagte Zeichenfolge Shift-JIS ohne die Notwendigkeit des Schreibens der Daten in eine Datei.
- - Eingang (UTF-8-Codierung):
ピーター・ジョーンズ
- - Ausgang (UMSCHALT-JIS-Codierung):
ピーター・ジョーンズ
(SHIFT-JIS kodiert werden)
Ich habe versucht dieses code-snippets, wie konvertieren von UTF-8-Zeichenfolgen in SHIFT-JIS:
stringToEncode.getBytes(Charset.forName("SHIFT-JIS"))
new String(unecodedString.getBytes("SHIFT-JIS"), "UTF-8")
Beide code-snippets return string Ausgabe: �s�[�^�[�E�W���[���Y
(SHIFT-JIS codiert)
Irgendwelche Ideen auf, wie diese gelöst werden können?
haben Sie einen Blick auf stackoverflow.com/questions/30341853/...
Ich bekomme nicht das ganze Bild.
Was meinst du mit "umwandeln, ohne Sie in eine Datei schreiben"? Wo wollen Sie die Shift-JIS zu gehen?
der Vorschlag ist bereits oben aufgeführt, und es produziert unerwartete Ausgabe von
Zeigen Sie bitte mehr code. Es sollte enthalten, wo die Daten herkommen, bevor Sie die Konvertierung, und, wo es geht.
Ich bekomme nicht das ganze Bild.
String
s in java sind immer codiert in UTF-16, irgendeiner anderen Kodierung ist entweder der held in ein byte-array geschrieben oder irgendeine Art von Datei - /Konsolen -/.... Also, Woher bekommen Sie Ihren input und wo schreibst du/sehen Sie Ihre Ausgabe?Was meinst du mit "umwandeln, ohne Sie in eine Datei schreiben"? Wo wollen Sie die Shift-JIS zu gehen?
der Vorschlag ist bereits oben aufgeführt, und es produziert unerwartete Ausgabe von
�s�[�^�[�E�W���[���Y
.Zeigen Sie bitte mehr code. Es sollte enthalten, wo die Daten herkommen, bevor Sie die Konvertierung, und, wo es geht.
InformationsquelleAutor Kaido Shugo | 2016-05-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Intern in Java sind Strings implementiert als array von UTF-16 code-Einheiten. Aber dies ist eine Implementierung detail, es wäre möglich zu implementieren, die eine JVM mit einer anderen Kodierung intern.
(Hinweis "Codierung", "charset" - und Charset-sind mehr oder weniger Synonyme.)
Einen String behandelt werden sollte als eine Sequenz von Unicode-codepoints (auch wenn in Java eine Sequenz von UTF-16 code-Einheiten).
Wenn Sie einen String in Ihre Java-Programm, es ist falsche zu sagen, dass es ein "UTF-8-String" oder "String ist UTF-8 kodiert". Das macht keinen Sinn, es sei denn, Sie sprechen über die interne Darstellung, die ist irrelevant.
Was man haben kann, ist eine Sequenz von bytes, die zu decodieren, um ein String, wenn Sie Sie entschlüsseln mit einer Codierung wie UTF-8 oder Shift-JIS.
Oder Sie können eine Zeichenfolge kodiert, auf eine Sequenz von bytes, wenn kodiert man es mit einer Codierung wie UTF-8 oder Shift-JIS.
Kurz gesagt, eine Codierung oder Charset ist ein paar von zwei Funktionen, "encode" und "decode", so dass:
Also, wenn Sie ein byte [], dass die Kodierung UTF-8:
Können Sie erstellen, die eine Zeichenfolge aus diese bytes mit:
Dann Kodieren Sie die Zeichenfolge als Shift-JIS verwenden:
Da die bytes für einen string codiert
Shift-JIS
versuchen zu Dekodieren, die mitUTF-8
produzieren Müll:Weiteren, denken Sie daran, dass, wenn Sie drucken Sie eine Zeichenfolge zu einer Leistung, zum Beispiel
System.out
, die das system default encoding, dass ist system abhängig, konvertieren Sie die Zeichenfolge in Byte. Es sieht aus wie Ihre Standard-system istUTF-8
.Dann, wenn Sie Ihre Ausgabe ist zum Beispiel die Windows-Konsole wird es dann konvertieren Sie diese bytes in eine Zeichenfolge mit sehr wohl eine völlig andere Codierung (wahrscheinlich
CP437
oderCP850
), bevor wir es Ihnen.Dieser Letzte Teil ist vielleicht stolpern Sie.
InformationsquelleAutor Christoffer Hammarström
"MS932" anstelle von Shift-JIS/SJIS machen kann.
InformationsquelleAutor Chinbat G.