OVH Cloud OVH Cloud

[VC++] Unicode et console

4 réponses
Avatar
Alain Migeon
Bonjour

Est-il posible d'utiliser wcout pour afficher correctement des=20
caract=E8res Unicode.

wcout << '\ufb97' << endl;=09=09// arabic letter gueh final form

Sous Visual Studio, j'obtiens ce warning.

warning C4566: character represented by universal-character-name=20
'\uFB97' cannot be represented in the current code page (1252)

J'ai le m=EAme warning si je place ce caract=E8re dans un wofstream.

Alain


--=20
_________________________________________________
Alain Migeon
Please reverse alain and migeon for replying.

4 réponses

Avatar
Jean-Marc Desperrier
Alain Migeon wrote:
wcout << 'ufb97' << endl; // arabic letter gueh final form

Sous Visual Studio, j'obtiens ce warning.
warning C4566: character represented by universal-character-name
'uFB97' cannot be represented in the current code page (1252)


Il me semble qu'au delà du warning le comportement sera incorrect en
fonction de l'"endianness", bien que cela ne pose pas forcément un
problème avec Visual Studio qui sera toujours "little endian".

La bonne version est :
wcout << L'ufb97' << endl;

Avatar
Alain Migeon
In article <elmqtd$n4d$,
says...
Alain Migeon wrote:
wcout << 'ufb97' << endl; // arabic letter gueh final form

Sous Visual Studio, j'obtiens ce warning.
warning C4566: character represented by universal-character-name
'uFB97' cannot be represented in the current code page (1252)


Il me semble qu'au delà du warning le comportement sera incorrect en
fonction de l'"endianness", bien que cela ne pose pas forcément un
problème avec Visual Studio qui sera toujours "little endian".

La bonne version est :
wcout << L'ufb97' << endl;



Merci pour la réponse.
Pas de warning, mais rien est imprimé dans la console.
Peut être est une histoire de fontes.

Question : Y-a-t-il moyen de préciser à wout que la chaîne de caract ères
qu'il doit imprimer est UTF-16LE, UTF-16BE, etc.


_________________________________________________
Alain Migeon
Please reverse alain and migeon for replying.


Avatar
Sylvain
Alain Migeon wrote on 15/12/2006 14:26:

Question : Y-a-t-il moyen de préciser à wout que la chaîne de caractères
qu'il doit imprimer est UTF-16LE, UTF-16BE, etc.


VS (certaines fonctions de) gèrent assez mal l'UTF.
si vous connaissez précisément le format des chaines (pour vouloir le
préciser) pourquoi ne pas plutôt les convertir en "ms wide char" (par
exemple via MultiByteToWideChar()) avant utilisation par les fonctions MS ?

Sylvain.

Avatar
Alain Migeon
In article <458318c5$0$25926$,
says...
Alain Migeon wrote on 15/12/2006 14:26:

Question : Y-a-t-il moyen de préciser à wout que la chaîne de car actères
qu'il doit imprimer est UTF-16LE, UTF-16BE, etc.


VS (certaines fonctions de) gèrent assez mal l'UTF.
si vous connaissez précisément le format des chaines (pour vouloir le
préciser) pourquoi ne pas plutôt les convertir en "ms wide char" (par
exemple via MultiByteToWideChar()) avant utilisation par les fonctions MS ?


J'avais ça aussi en tête, mais je cherchais à faire quelque chose qui
soit strictement C++.

_________________________________________________
Alain Migeon
Please reverse alain and migeon for replying.