Bonjour,
qqun pourrait me dire pourquoi je n'arrive pas � g�rer les accents ?
MessageBox("t�te");
ou CString tmp = "t�te";
MessageBox(tmp);
compilation unicode ou pas c'est pareil.
ca me renvois pas les accents !
Merci.
Version imprimable
Bonjour,
qqun pourrait me dire pourquoi je n'arrive pas � g�rer les accents ?
MessageBox("t�te");
ou CString tmp = "t�te";
MessageBox(tmp);
compilation unicode ou pas c'est pareil.
ca me renvois pas les accents !
Merci.
Les valeurs en dur dans le code, c'est caca !
Mettre des valeurs en dur quand on ne ma�trise pas clairement l'encodage (BOM, UTF-8, etc...) des fichiers source (et la non-utilisation de la MACRO L ou TEXT), c'est s'exposer � bien des emmerdes.
Vos questions et remarques montrent que vous n'avez pas une grande exp�rience dans le domaine, on devra le faire par �tape.
On commence par la commencement : Pourquoi utiliser cette antiquit� de CString qui n'est m�me pas compatible avec le moindre accent m�me ASCII �tendu et pas la classe standard "std::string" (c'est pas pour �a qu'il faut s'en servir) ?
C��tait un exemple.
en fait je r�cupere des valeurs lu dans un xml via tinyxml2. je n'ai aucunes chaines litt�rales en dur dans le code.
pour toutes les autres chaines je les stocks dans les ressource et je les appelle via loadstring pour afficher certains messages dans des messagebox.
je veux bien definir des std::string et l'afficher dans un MessageBox mais �a change rien.
il aurait plus simple de me dire de compiler en UNICODE et de passer utf-8 en ligne de commande.
c��tait pas une �vidence pour moi, j'avais arr�t� de programmer il y a 20 ans.
Bonjour, le probl�me venait de moi.
j'avais bien un xml avec en ent�te utf-8
mais comme je n'y connaissais rien en xml , pour le cr�er je m'etais servi de bloc note.
je ne savais pas qu'il fallait l'encoder aussi en utf-8. chose faite avec notepad ++.
je recupere bien mes accents du coup.
question : pk sp�cifier un ent�te si c'est l'encodage qui compte ?
CString est un alias vers CStringT.
Si vous ne compilez qu'en UNICODE, autant utiliser CStringW, au moins c'est explicite.
Et quit � utiliser du standard, autant utiliser std::wsting.
La gestion des accents et des mauvais encodages seront plus visible avec ces types explicitement "Wide".
Qu�entendez-vous par "encodage" ?Citation:
question : pk sp�cifier un ent�te si c'est l'encodage qui compte ?
Sans en-t�te, aucun moyen "fiable" d'avoir l'encodage d'un fichier.
Ce n'est que des heuristiques qui permettent de "deviner/�valuer" l'encodage d'un fichier. Donc chaque �diteur de texte peut �valuer l'encodage d'un fichier de mani�re diff�rente.
L'en-t�te XML est l� pour avoir un r�sultat coh�rent si le fichier est correctement encod� (que l'en-t�te est coh�rent avec l'encodage, que l'encodage est le m�me tout le long du document, etc...).
Si votre en-t�te ne correspond pas � l'encodage ou que vous utilisez plusieurs encodages, la librairie XML ne peut pas faire de miracle.
Comme je l'ai d�j� indiqu�, c'est � vous (d�veloppeur ou utilisateur final) de ne donner � votre programme que des fichiers "coh�rents", ou activez le mode "parano�a" des librairies pour qu'elles n'acceptent que des fichiers "en b�ton".