Bonjour,
Je débute avec l'unicode, et j'ai un peu du mal.
J'ai un fichier unicode.txt qui commence comme ca en binaire :
FF FE 54 00 68 00 69 00 73 00 ... : ??T.h.i.s ....
Si j'essaye de le lire ainsi :
std::wifstream fs("unicode.txt");
std::wstring wline;
std::getline(fs, wline);
alors wline contient : (FF),(FE),(54),(00),... en wchar_t
et non pas : L"This"....
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
James Kanze
"Amerio" writes:
|> Je débute avec l'unicode, et j'ai un peu du mal. J'ai un fichier |> unicode.txt qui commence comme ca en binaire : |> FF FE 54 00 68 00 69 00 73 00 ... : ??T.h.i.s ....
|> Si j'essaye de le lire ainsi : |> std::wifstream fs("unicode.txt"); |> std::wstring wline; |> std::getline(fs, wline);
|> alors wline contient : (FF),(FE),(54),(00),... en wchar_t |> et non pas : L"This"....
|> Ou est mon erreur ?
Quel est le locale par défaut ? Il faut bien dire à wfstream l'encodage du fichier qu'il lit. Sous Linux et sous Solaris, il n'existe pas de locale pour lire Unicode ; on est donc quitte à l'écrire soi-même. Sous Windows, je m'attendrais en trouver un, étant donné que Windows utilise Unicode beaucoup dans ces fichiers (où le monde Unix préfère UTF-8), mais il me semble avoir entendu dire que le défaut se comportait à peu près comme ce que tu vois.
-- James Kanze mailto: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93
"Amerio" <amerio@hotmail.com> writes:
|> Je débute avec l'unicode, et j'ai un peu du mal. J'ai un fichier
|> unicode.txt qui commence comme ca en binaire :
|> FF FE 54 00 68 00 69 00 73 00 ... : ??T.h.i.s ....
|> Si j'essaye de le lire ainsi :
|> std::wifstream fs("unicode.txt");
|> std::wstring wline;
|> std::getline(fs, wline);
|> alors wline contient : (FF),(FE),(54),(00),... en wchar_t
|> et non pas : L"This"....
|> Ou est mon erreur ?
Quel est le locale par défaut ? Il faut bien dire à wfstream
l'encodage du fichier qu'il lit. Sous Linux et sous Solaris, il n'existe
pas de locale pour lire Unicode ; on est donc quitte à l'écrire
soi-même. Sous Windows, je m'attendrais en trouver un, étant
donné que Windows utilise Unicode beaucoup dans ces fichiers (où
le monde Unix préfère UTF-8), mais il me semble avoir entendu dire
que le défaut se comportait à peu près comme ce que tu vois.
--
James Kanze mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93
|> Je débute avec l'unicode, et j'ai un peu du mal. J'ai un fichier |> unicode.txt qui commence comme ca en binaire : |> FF FE 54 00 68 00 69 00 73 00 ... : ??T.h.i.s ....
|> Si j'essaye de le lire ainsi : |> std::wifstream fs("unicode.txt"); |> std::wstring wline; |> std::getline(fs, wline);
|> alors wline contient : (FF),(FE),(54),(00),... en wchar_t |> et non pas : L"This"....
|> Ou est mon erreur ?
Quel est le locale par défaut ? Il faut bien dire à wfstream l'encodage du fichier qu'il lit. Sous Linux et sous Solaris, il n'existe pas de locale pour lire Unicode ; on est donc quitte à l'écrire soi-même. Sous Windows, je m'attendrais en trouver un, étant donné que Windows utilise Unicode beaucoup dans ces fichiers (où le monde Unix préfère UTF-8), mais il me semble avoir entendu dire que le défaut se comportait à peu près comme ce que tu vois.
-- James Kanze mailto: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93