53 votes

Convertir une chaîne internationale en \u Codes en java

Comment puis-je convertir une chaîne internationale (par exemple russe) en \u nombres (nombres unicode)
par exemple \u041e\u041a pour OK ?

7voto

Sam Barnum Points 5019

Il existe un outil en ligne de commande fourni avec java appelé native2ascii . Cela convertit les fichiers unicode en fichiers encodés en ASCII. J'ai constaté que c'est une étape nécessaire pour générer des fichiers .properties pour la localisation.

6voto

x4u Points 7436

Au cas où vous en auriez besoin pour écrire un .properties vous pouvez simplement ajouter les chaînes de caractères dans un objet Propriétés, puis l'enregistrer dans un fichier. Le système se chargera de la conversion.

5voto

davidofmorris Points 61

Apache commons StringEscapeUtils.escapeEcmaScript(String) renvoie une chaîne de caractères avec les caractères unicode échappés à l'aide de la fonction \u la notation.

"Art of Beer

3voto

Michael Gantman Points 1936

Il existe une bibliothèque Java Open Source, MgntUtils, qui contient un utilitaire permettant de convertir les chaînes de caractères en séquence unicode et vice versa :

result = "Hello World";
result = StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence(result);
System.out.println(result);
result = StringUnicodeEncoderDecoder.decodeUnicodeSequenceToString(result);
System.out.println(result);

La sortie de ce code est :

\u0048\u0065\u006c\u006c\u006f\u0020\u0057\u006f\u0072\u006c\u0064
Hello World

La bibliothèque se trouve à l'adresse suivante Maven Central ou à Github Il est livré en tant qu'artefact maven et avec les sources et la javadoc.

Voici la javadoc de la classe StringUnicodeEncoderDecoder

2voto

larsilus Points 11

Juste quelques méthodes de base pour cela (inspirées de l'outil native2ascii) :

/**
 * Encode a String like äöü to \u00e4\u00f6\u00fc
 * 
 * @param text
 * @return
 */
public String native2ascii(String text) {
    if (text == null)
        return text;
    StringBuilder sb = new StringBuilder();
    for (char ch : text.toCharArray()) {
        sb.append(native2ascii(ch));
    }
    return sb.toString();
}

/**
 * Encode a Character like ä to \u00e4
 * 
 * @param ch
 * @return
 */
public String native2ascii(char ch) {
    if (ch > '\u007f') {
        StringBuilder sb = new StringBuilder();
        // write \udddd
        sb.append("\\u");
        StringBuffer hex = new StringBuffer(Integer.toHexString(ch));
        hex.reverse();
        int length = 4 - hex.length();
        for (int j = 0; j < length; j++) {
            hex.append('0');
        }
        for (int j = 0; j < 4; j++) {
            sb.append(hex.charAt(3 - j));
        }
        return sb.toString();
    } else {
        return Character.toString(ch);
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X