1

je n'arrive pas à afficher des accents en mode console,

j'ai essayé de changer l'encodage par SetConsoleOutputCP(1252); ou system("chcp 1252");
mais ca ne marche pas car il faut changer la fonte de la console

apres j'ai trouvé CharToOem, et la ... cheeky

char maChaine[20] = "abcdéùàabc";
CharToOem(maChaine,maChaine);
printf("%s\n",maChaine);


fonctionne, mais

char * name = get(ptr,"title=\"","\">");
char zzz[1024];
CharToOem(name,zzz);
printf("\n * %s",zzz);


ne fonctionne pas :- /

j'ai aussi testé CharToOemBuff mais le resultat est le meme

help! ^^
et la le mec il le pécho par le bras et il lui dit '

2

Sous ultraedit je switchais l'éditeur en mode OEM directement cheeky

3

je n'ai pas trouvé comment forcer l'encodage dans vc++ 6
codeblock me le faisais automatiquement, mais je n'arive pas à linker curl avec :- /

et je me vois mal reouvrir mon source à chaque modif pour le resauver en oem ^^

surtout que l'exemple basique fonctionne tres bien,
la chaine que me renvois get est defini comme static dans le corp de get,
j'ai aussi testé avec une chaine externe mais c'est pareil ! dingue

char plop[1024];
char * name = get(ptr,"title=\"","\">",plop);
char zzz[1024];
CharToOem(name,zzz);
shell.printc(BLEU,"\n * %s",zzz);
et la le mec il le pécho par le bras et il lui dit '

4

74sg :'(
et la le mec il le pécho par le bras et il lui dit '

5

ca viens peu etre du fait que la chaine est prise depuis ce que me renvois curl ?

<map name="rx"><area href="build.php?id=1" coords="101,33,28" shape="circle" title="Bûcheron niveau 1">
il encode peu etre ca differement (vu que ca m'affiche deux char dans la console) ?

j'ai ca dans l'header de la reponse curl Content-Type: text/html; charset=UTF-8
et la le mec il le pécho par le bras et il lui dit '

6

quant j'affiche le fichier en hexa avec ultraedit j'ai le meme resultat
O2cE
et la le mec il le pécho par le bras et il lui dit '

7

bon, selon notepad++ se serais encodé en utf8 sans BOM
je vais chercher un moyen de transformer ca en oem.
et la le mec il le pécho par le bras et il lui dit '

8

j'ai finalement trouvé ici :- )

char *Utf8ToAnsi(const char * utf8, int len)
{
char *utf8str = NULL;
int length = MultiByteToWideChar(CP_UTF8, 0, utf8, len, NULL, NULL );
WCHAR *lpszW = NULL;
lpszW = new WCHAR[length+1];
MultiByteToWideChar(CP_UTF8, 0, utf8, -1, lpszW, length );
int length1 = WideCharToMultiByte(CP_ACP, 0, lpszW, length, NULL, 0, NULL, NULL);
utf8str = ( char * ) calloc ( sizeof(char), length1+1 );
WideCharToMultiByte(CP_ACP, 0, lpszW, length, utf8str, length1, NULL, NULL);
utf8str[length1] = 0;
delete[] lpszW;
return utf8str;
}


char * str = Utf8ToAnsi(name,strlen(name));
CharToOem(str,str);
printf(str);
et la le mec il le pécho par le bras et il lui dit '

9

Hmmm, normalement tu devrais pouvoir convertir ton UTF-16 (WideChar) directement en OEM sans passer par le "Ansi" (qui n'est pas vraiment défini par l'ANSI, mais là n'est pas le sujet).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

10

Si tu veux utiliser les fonctions propriétaires de Windows, le mieux est d'utiliser directement WriteConsoleW(), qui s'occupe de la conversion si tu utilises les polices raster (et qui peut afficher directement les caractères si tu es en Lucida Console).
Le problème débile, c'est que WriteConsoleW() échoue si la sortie a été redirigée vers un fichier ou un pipe...

Ce qu'il faudrait, c'est faire une fonction qui vérifie si la sortie est une console, et emploie WriteConsoleW() si c'est le cas, et WideCharToMultiByte() + WriteFile() sinon...
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

11

Link (./10) :
Si tu veux utiliser les fonctions propriétaires de Windows

S'il ne veut pas en utiliser, la solution qu'il propose n'est pas bonne non plus, il y a plein de fonctions non portables là dedans.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

12

En même temps, c'est un faux problème, la différence jeu de caractères console / jeu de caractères GUI est spécifique à Windows.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo