Windows-1252 encodage des caractères incorrects affiche
J'ai un tampon avec les caractères encodés en Windows-1252. Cependant, quand je créer une nouvelle Chaîne avec codage approprié, au lieu de résultat attendu, j'ai assez souvent l'interrogatoire marques, ex.
byte[] tmps = new byte[] {(byte) 0xfb};
System.out.println (new String (tmps,0,1,"Windows-1252" ));
Comme résultat le système doit afficher "u" char avec "^" au-dessus d'elle. Au lieu de cela, il affiche "?".
Une idée?
- J'ai lancé ce code dans un test unitaire dans NetBeans 8 à l'aide de Java 8, et il affiche "u" avec l'accent circonflexe l'amende juste.
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, Windows-1252 est un codage pris en charge:
Si ce n'était pas, vous obtiendrez un
UnsupportedEncodingException
dansnew String (...,"Windows-1252")
. (C'est ce que l' javadoc dit!)L'Oracle Java documentation dire Windows-1252 est dans la "Base Encodage" - http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html, http://docs.oracle.com/javase/6/docs/technotes/guides/intl/encoding.doc.html, etcetera.
Je pense que le problème le plus probable est ici du côté de la production. Plus précisément, Java peut penser que vos paramètres régionaux par défaut du jeu de caractères ASCII ou quelque chose qui ne supportent pas que codepoint.
Un moyen d'éliminer
Windows-1252
comme le cause de ce problème consiste à écrire l'équivalent de chaîne à l'aide d'un échappement Unicode; par exemple,J'ai déjà trouvé ce.
Menu Run/Run configurations/suivante, Java de l'Application et de votre propre nom de l'application/l'onglet suivant/encodage UTF-8
Et depuis maintenant deux windows 1250 et 1252 caractères semble être affiché ok.