Java Convertir une chaîne étrange en chaîne de langue birmane


Salut mon exemple de code est comme;

String ln="á€á€­á€•á€¹á€•á€¶á€”ဲ့";
    try {
        byte[] b = ln.getBytes("UTF-8");
        String s = new String(b, "US-ASCII");
        System.out.println(s);
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }

Quand je l'exécute, il n'imprime pas Brumese, y a - t-il une sloution pour cela ? Merci

Author: Rtech, 2015-07-01

1 answers

Le vrai problème est que le serveur renvoie du contenu soit avec le mauvais jeu de caractères, soit avec un double codage. Si possible, vous devriez obtenir fixe.

En attendant, vous avez la bonne idée-convertir le texte mal codé en jeu de caractères correct.

Chaque caractère de votre chaîne était apparemment censé être un octet unique qui faisait partie d'une séquence d'octets UTF-8. Ce que vous voyez en fait, c'est que chacun de ces octets simples est traité comme un caractère dans le jeu de caractères Windows cp1252, et converti en un caractère Java en conséquence.

Donc, vous voulez d'abord convertir les caractères de cp1252 en octets appropriés:

byte[] b = ln.getBytes("cp1252");

Maintenant, vous avez une vraie séquence d'octets UTF-8, que vous pouvez convertir en la chaîne appropriée:

String s = new String(b, StandardCharsets.UTF_8);
// In Java 6, you must use:
//String s = new String(b, "UTF-8");

Vous ne devez jamais utiliser US-ASCII si vous décodez ou essayez de générer des caractères birmans ou des caractères non anglais. ASCII se compose de points de code 0 à 127 uniquement.

 1
Author: VGR, 2015-07-01 14:08:23