Encodage. Utilisation des caractères vietnamiens [Résolu]

Signaler
Messages postés
3
Date d'inscription
mardi 4 mai 2021
Statut
Membre
Dernière intervention
8 mai 2021
-
Messages postés
3
Date d'inscription
mardi 4 mai 2021
Statut
Membre
Dernière intervention
8 mai 2021
-
Bonjour,

Je souhaite développer une application qui utilise l'écriture vietnamienne.
Il me semblait que les caractères vietnamiens sont inclus dans l'UTF-16 mais lorsque je fais :
correction="đ";
System.out.println(correction);
Le résultat affiché est un point d'interrogation à la place du "đ" (d barré)
Pouvez-vous SVP me dire comment gérer l'encodage dans Java.
Est-ce que UTF-16 inclue bien les caractères vietnamien ?
Merci.
Pascal

Configuration: Windows / Chrome 90.0.4430.93

3 réponses

Messages postés
16335
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 mai 2021
2 829
Bonjour,

Pour écrire de l'Unicode en Java il vaut mieux utiliser \u suivi du code hexadécimal du caractère, parce que mettre directement le caractère Unicode dans le code source peut poser des problèmes à la compilation (et ce serait de toute façon impossible pour un caractère non imprimable).

Par exemple pour đ il faut écrire "\u0111"
https://www.fileformat.info/info/unicode/char/0111/index.htm

Toutefois, ce n'est pas parce que tu écris un caractère Unicode que le support qui va le lire saura l'afficher.
Avec un System.out.println, tu écris dans la console, mais si celle ci ne supporte pas l'Unicode alors tu auras des ? à la place des caractères inconnus.

Le problème ce n'est donc pas ton programme, mais la console.
Avec le même programme mais deux consoles, une qui gère l'Unicode, l'autre non, tu auras des résultats différents, bien affiché sur l'une, avec des ? sur l'autre.
Messages postés
3
Date d'inscription
mardi 4 mai 2021
Statut
Membre
Dernière intervention
8 mai 2021

Bonjour,
merci pour votre réponse.
Malheureusement, j'ai le même résultat en écrivant :
System.out.println("\u0111");
Messages postés
16335
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 mai 2021
2 829
Oui, mais le problème ne vient pas de ton programme, c'est ta console qui ne sait pas afficher ce caractère.

Si tu redirigeais le flux de données vers un fichier par exemple pour le lire avec un logiciel qui sait afficher l'Unicode, tu verrais que le caractère est bien là.

Exemple :
java MaClasse > fichier.txt
Messages postés
3
Date d'inscription
mardi 4 mai 2021
Statut
Membre
Dernière intervention
8 mai 2021

Exact. J'utilisais la console pour débugger mais l'affichage dans Swing fonctionne.
Merci beaucoup pour le dépannage !