2010-11-05 6 views
0

Salut J'ai un scénario où j'ai besoin de convertir le jeu de caractères par défaut devrait être remplacé par UTF-8. J'utilise en-dessous de la classe. Mais je ne reçois pas la sortie attendue. Parce que j'utilise un système Unix qui a UTF-8 par défaut comme charset et je compare les résultats là-bas. Ai-je tort quelque part dans ce programme?Conversion de charset Java

public class CharsetDisplay { 

public static void main(String[] args) { 
    System.out.println(Charset.defaultCharset().name()); 
    System.out.println(Charset.isSupported("UTF-8")); 
    final Charset UTF8_CHARSET = Charset.forName("UTF-8"); 
    try { 
    byte[] byteArray = new byte[] {34,34,0}; 
    String str = new String(byteArray,UTF8_CHARSET); 
    System.out.println("String*** "+str); 
    System.out.println("String to Hex *** "+stringToHex(str)); 
    } catch (Exception e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } 
} 

} 

sortie Imprime comme

windows-1252 
true 
String*** "" 

note après "" dans la sortie de chaîne, j'ai un spl char, que je ne suis pas dans un env unix

+0

Oops désolé pour le format perdu dans l'extrait de code ci-dessus .. Stackoverflow juste enlevé toutes les nouvelles lignes :( – javanerd

+2

Qu'est-ce que vous essayez de faire exactement? Octets '34 34 00' en UTF-8 signifie« double-citation double-citation null », ce qui est ce que vous avez –

+0

Depuis que je voyais la sortie en eclipse, j'obtenais un caractère spécial après une double citation.J'ai essayé via l'invite de commande dans dos et ça a bien fonctionné Merci – javanerd

Répondre

2

Qu'est-ce que vous attendre l'octet zéro à rendre comme dans cet environnement? Votre sortie semble exactement correcte pour moi. N'oubliez pas que les différences que vous rencontrez entre les environnements peuvent ne pas correspondre à Java. Si vous appelez votre programme Java à partir d'une console (ce que je pense que vous êtes), c'est à la console de convertir la sortie du programme à ce que vous voyez à l'écran. Ainsi, en fonction du jeu de caractères utilisé par la console , il est tout à fait possible que Java affiche les caractères attendus, mais que la console ne parvienne pas à les afficher correctement.

+0

Merci pour la réponse, j'utilisais eclipse et je voyais un caractère spécial. sur une invite de commande ne donne aucun caractère spécial. Je peux donc supposer que la sortie est basée sur le jeu de caractères de la console. Merci beaucoup :) – javanerd

2

Si Java ne ramasser l'encodage de vos paramètres régionaux correctement, vous devrez peut-être de ne pas dire explicitement, à la ligne de commande:

java -Dfile.encoding=utf-8 CharsetDisplay