42 votes

Vérifiez si une chaîne est encodée en UTF-8 valide en Java

Comment puis-je vérifier si une chaîne est au format UTF-8 valide ?

38voto

DArkO Points 5974

Seules les données d'octet peuvent être vérifiées. Si vous avez construit une chaîne, elle est déjà en UTF-16 en interne.

De plus, seuls les tableaux d'octets peuvent être codés en UTF-8.

Voici un cas courant de conversions UTF-8.

 String myString = "\u0048\u0065\u006C\u006C\u006F World";
System.out.println(myString);
byte[] myBytes = null;

try 
{
    myBytes = myString.getBytes("UTF-8");
} 
catch (UnsupportedEncodingException e)
{
    e.printStackTrace();
    System.exit(-1);
}

for (int i=0; i < myBytes.length; i++) {
    System.out.println(myBytes[i]);
}

Si vous ne connaissez pas l'encodage de votre tableau d'octets, juniversalchardet est une bibliothèque pour vous aider à le détecter.

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