Japonais de Codage de Caractères en Java
Voici mon problème. Je suis maintenant en utilisant l'aide de Java Apache POI pour lire un fichier Excel (.xls ou .xlsx) de fichier et afficher le contenu. Il y a quelques caractères Japonais dans la feuille de calcul et tous les caractères Japonais que je possède sont des "???" à ma sortie. J'ai essayé d'utiliser Shift-JIS, UTF-8 et de nombreux autres codant les moyens, mais ça ne fonctionne pas...
Voici mon codage code ci-dessous:
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;
}
Je suis de passage dans chaque chaîne, je suis arrivé à l'encodage(str). Mais lorsque j'imprime la valeur de retour, c'est toujours quelque chose comme "???" (Comme ci-dessous), mais pas les caractères Japonais (Hiragana, Katakana ou Kanji).
title-jp=???
Quelqu'un peut m'aider avec ça? Je vous remercie beaucoup.
OriginalL'auteur Allan Jiang | 2011-10-08
Vous devez vous connecter pour publier un commentaire.
Votre
changeCharset
méthode semble étrange.String
objets en Java sont les mieux à la pensée de ne pas avoir un jeu de caractères spécifique. Ils utilisent Unicode et peut donc représenter tous les caractères, et pas seulement un sous-ensemble régional. Votre méthode dit: mettez la chaîne en octets à l'aide de mon système de jeu de caractères (quel qu'il soit), et puis essayer d'interpréter ces octets en utilisant un autre jeu de caractères spécifié dansnewCharset
), qui, par conséquent, ne sera probablement pas de travail. Si vous convertissez des octets dans un encodage, vous devriez lire ces octets avec le même encodage.Mise à jour:
Pour convertir une Chaîne de Shift-JIS (un codage régional couramment utilisé au Japon), vous pouvez dire:
Si vous écrivez ces octets dans un fichier, puis ouvrez le fichier dans le bloc-notes sur un ordinateur Windows où les paramètres régionaux sont tous Japon-centric, le bloc-notes de l'afficher en Japonais (n'ayant rien d'autre à aller sur, il assumera le texte est dans le système local de l'encodage).
Cependant, vous pourriez aussi bien l'enregistrer en UTF-8 (avec le préfixe de 3 octets UTF-8 introducteur de la séquence) et le bloc-notes affiche également comme le Japonais. Shift-JIS n'est un manière de représenter le texte Japonais en octets.
OriginalL'auteur Daniel Earwicker
Je soupçonne que vous ne devriez pas faire cela en premier lieu. Si c'est vraiment Apache POI de la faute, alors vous aurez besoin pour obtenir le raw d'origine octets de données, pas suffit d'utiliser la valeur par défaut du système encdoing.
D'autre part, je pense que c'est tout à fait probable que Apache POI a réussi à faire la bonne chose, et c'est juste un problème de sortie. Je vous suggère de faire un dump de la chaîne d'origine que vous avez (suppression de votre
encoding
méthode entièrement) en termes de points de code Unicode, par exempleVérifiez les valeurs Unicode contre la celle du site web Unicode.
OriginalL'auteur Jon Skeet