Japanische Zeichencodierung in Java
Hier ist mein problem. Ich bin jetzt mit Hilfe von Java Apache POI Einlesen Excel - (.xls-oder .xlsx-Datei), und zeigen Sie den Inhalt. Es gibt einige japanische Zeichen in der Tabelle und alle die Japanisch chars die ich habe sind "???" in meiner Ausgabe. Ich habe versucht, zu verwenden, Shift-JIS, UTF-8 und viele andere Codierung Wege, aber es funktioniert nicht...
Hier ist meine Codierung folgenden code:
public String encoding(String str) throws UnsupportedEncodingException{
String Encoding = "Shift_JIS";
return this.changeCharset(str, Encoding);
}
public String changeCharset(String str, String newCharset) throws UnsupportedEncodingException {
if (str != null) {
byte[] bs = str.getBytes();
return new String(bs, newCharset);
}
return null;
}
Leite ich in jedem string ich habe die Codierung(str.). Aber wenn ich drucken Sie die return-Wert, es ist immer noch so etwas wie "???" (Wie unten), aber keine japanischen Zeichen (Hiragana, Katakana oder Kanji).
title-jp=???
Jemand kann mir helfen mit diesem? Ich danke Ihnen so sehr.
InformationsquelleAutor Allan Jiang | 2011-10-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre
changeCharset
Methode scheint seltsam.String
Objekte in Java sind am besten gedacht als nicht einen bestimmten Zeichensatz. Sie Unicode verwenden und so darstellen kann, alle Zeichen, nicht nur eine regionale Untergruppe. Deine Methode sagt: biegen Sie die Zeichenfolge in bytes mit meine system-Zeichensatz (was auch immer das sein mag), und dann versuchen, und interpretiert diese bytes mit einem anderen Zeichensatz (angegeben innewCharset
), die daher wahrscheinlich nicht funktionieren. Wenn Sie die Konvertierung zu bytes in einer Codierung, die Sie Lesen sollten, diese bytes mit der gleichen Codierung.Update:
Zur Konvertierung einer Zeichenfolge in Shift-JIS (eine regional-Codierung allgemein in Japan verwendet wird) kann man sagen:
Wenn Sie schreiben, diese bytes in eine Datei, und öffnen Sie dann die Datei in Notepad auf einem Windows-computer, auf dem die regionalen Einstellungen werden alle Japan-centric, Editor angezeigt werden in Japanisch (mit nichts anderem zu gehen, es übernimmt der text ist in der lokalen Codierung).
Jedoch, Sie könnte auch speichern Sie es als UTF-8 (mit dem Präfix 3-byte UTF-8 sequence introducer), und der Editor wird auch angezeigt, es als Japanisch. Shift-JIS wird nur eine Form der Darstellung von japanischem text als Byte.
InformationsquelleAutor Daniel Earwicker
Ich vermute, Sie sollten dies nicht tun in den ersten Platz. Wenn es wirklich so ist Apache POI ' s Schuld, dann müssen Sie die original-raw-bytes von Daten, nicht verwenden Sie einfach die Standardeinstellung des Systems encdoing.
Auf der anderen Seite, ich denke, es ist durchaus wahrscheinlich, dass Apache POI geschafft hat, das richtige zu tun, und es ist nur ein Ausgabe-problem. Ich schlage vor, Sie sichern Sie die ursprüngliche Zeichenfolge, die Sie haben, zu entfernen (Ihre
encoding
Methode ausschließlich) in Bezug auf Ihre Unicode-code-points, z.B.Überprüfen Sie die Unicode-Werte gegen die diejenigen, die auf der Unicode-Website.
InformationsquelleAutor Jon Skeet