begin process at 2012 05 28 09:22:30
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Autre

 > 

ascii vers iso 8859-1


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

ascii vers iso 8859-1

dimanche 15 juillet 2007 à 21:18:14 | ascii vers iso 8859-1

ebooserge

bonjour a tous,

je recupere dans un fichier un chaine de caracteres avec des caracteres du genre  Stéréo
en fait c'est le mot stéréo qu'il me met ainsi. le fichier, je le recupere sur le net et j'essaie de l'afficher normalement (avec les caracteres latins).
ma question est donc de savoir comment faire pour convertir ces hiéroglyphes en caracteres bien de chez nous ?

merci de votre aide

ps: je suis sous visual studio 2005 et mon projet est en c++ et multi byte, pas en unicode.

dimanche 15 juillet 2007 à 22:05:25 | Re : ascii vers iso 8859-1

aardman

Membre Club
Salut,
Vu la tête de 'stéréo', ton fichier a plutot l'air d'etre codé en UTF-8.
Je pense pas qu'il existe de fonction pour passer direct d'UTF-8 en multibyte, donc je te suggere de passer par unicode avec MultiByteToWideChar et WideCharToMultiByte.
dimanche 15 juillet 2007 à 23:09:31 | Re : ascii vers iso 8859-1

ebooserge

merci de ta reponse.
en effet j'ai essayé comme tu as dit, d'abord passé le buffer en wide char, puis le ramener en multibyte; mais ca ne fonctionne pas.
j'ai essayé avec CP_ACP et meme avec UTF8, rien a faire.
donc je suis ouvert a toute autre proposition ;-)
dimanche 15 juillet 2007 à 23:37:44 | Re : ascii vers iso 8859-1

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
devrait aller ainsi:

DWORD __stdcall RemplaceBizzare(BYTE *pbuf, DWORD len)
{
  BYTE *c, *d;
  if(!len) return 0;
fromBUFF:
  *d = *c;
  if(*c == 'Ã') {
    if(len > 1) {
      if(*(c+1) == '©') {*d = 'é'; c++; len--;}
    }
  }
  d++; c++;
  if(--len) goto fromBUFF;
  return (d - pbuf);
}

ciao...
BruNews, MVP VC++
lundi 16 juillet 2007 à 00:07:20 | Re : ascii vers iso 8859-1

aardman

Membre Club
Réponse acceptée !
Salut,
Petit exemple juste pour stéréo, a adapter:
char tab[200] = "stéréo";
wchar_t wtab[200];
MultiByteToWideChar(CP_UTF8, 0, tab, -1, wtab, 200);
WideCharToMultiByte(CP_ACP, 0, wtab, -1, tab, 200, NULL, NULL);
MessageBoxA(NULL, tab, "", 0);
Le mieux c'est quand même de coder en unicode, a mon avis, surtout si tu es ammené a gerer des fichiers codés en utf-8 (ou en autre chose).


lundi 16 juillet 2007 à 08:54:12 | Re : ascii vers iso 8859-1

fredsor

Membre Club
Réponse acceptée !
J'ai deux petites fonctions qui fonctionnent tres bien chez moi ( ca va dans la continuité de se qui a été proposé precedemment...) :

// cette fonction permet de convertir une chaîne ANSI en UniCode
// en entrée : chaîne en ANSI
// return la chaîne en UniCode.

unsigned short*  ConvertAnsiToUnicode(char* szAnsi)
{
    //Trouver la taille finale pour réserver le buffer
    int Size = MultiByteToWideChar (CP_ACP, 0, szAnsi, -1, NULL, 0) ;
    LPWSTR wUnicode = new WCHAR[Size];
    //effectuer la conversion
    MultiByteToWideChar (CP_ACP, 0, szAnsi, -1, wUnicode, Size) ;
    return wUnicode;
}

// cette fonction permet de convertir une chaîne UniCode en ANSI
// en entrée : la chaîne en UniCode.
// return chaîne en ANSI

char* ConvertUnicodeToAnsi(TCHAR* wUnicode)
{
    int bTemp=(sizeof(wUnicode)/sizeof(TCHAR));
    int Size = WideCharToMultiByte(CP_ACP, 0, wUnicode, -1, NULL, 0, NULL, &bTemp) ;
    LPSTR szAnsi = new char[Size];
    WideCharToMultiByte(CP_ACP, 0, wUnicode, -1, szAnsi, Size, NULL, &bTemp) ;
    return szAnsi;
}


En esperant t'etre utile...
Ciao
lundi 16 juillet 2007 à 10:11:55 | Re : ascii vers iso 8859-1

ebooserge


MERCI de vos réponses les gars !!!
j'avoue que la solution de aardman est la plus simple. mon erreur venait du fait que je mettais cp_acp ou cp_utf8 dans les deux conversions, au lieu de mettre cp_utf8 pour le multibyte vers le wide char, et cp_acp pour le retour au multibyte.
merci encore les gars, vous etes trop sympa.

ps: faudrait que je mette vraiment à programmer en unicode. je dois perdre l'habitude de la programmation en multibyte. il ya pas que l'anglais dans le monde


Cette discussion est classée dans : fichier, caracteres, ascii, recupere, iso


Répondre à ce message

Sujets en rapport avec ce message

se deplacer a la ligne dans un fichier [ par dletozeun ] est ce que quelqu'un connait une commande,une fonction qui permet de se de placer de lignes en lignes plutot que de caracteres en caracteres?Par ex: p code ascii [ par maevasa ] bonjour!voilà je cherche à retirer un nombre variable (entier) à la valeur ascii d'une lettre récupéré dans le fichier fad et d'écrire la lettre trouv chaine de caractere de taille variable [ par habibdu70 ] slt,savez vous comment modifier la taille d'une chaine de caractere ?par exemple si le nom de fichier fait 8 caracteres, je creai un fichier de 8 cara prob avec un istream [ par Bybydjou ] bjour, j'ai un probleme avec la lecture d'un fichierg fait un :ifstream fichier;fichier.open("blabla.bla");mais apres, je le lis caracteres par caract identification de caracteres dans un fichier TXT [ par enrageur ] Voila j'aimerais compter le nombre de fois qu'il y a un mot dans un fichier text.J'ouvre le fichier text, ensuite je le lit et je le met dans une vari Lecture de caractere speciaux a partir d'un fichier [language c] [ par rouliow ] Bonjour, j'ai un problème en language C.J'aimerai crée une fonction qui ouvre un fichier .txt et qui sauvgarde chacun des caracteres du fichier dans u Rechercher une chaine de caractere dans un fichier [ par watch_3754 ] Voila mon probleme peut paraitre simple mais moi ca devient enervant.Je voudrai pouvoir rechercher dans un fichier (qui n'est pas en forme de tableau) Lire dans un fichier text [ par enrageur ] Je programme sous Visual C++. J'aimerais lire dans un fichier texte une serie de caracteres pour pouvoir la comparrer avec une reference. Pour cela j' Recupere un nom de fichier. [ par oRTEEZ ] Bonjour, j'ai un petit probleme, j'ai cree une interface graphique, avec un bouton parcourir pour allez chercher le fichier a ouvrir.Je desire affiche Sauvegarder des coordonnees dans un fichier ascii [ par fred100582 ] Salut, je voudrais sauvegarder la position d'objet (dans une fenetre opengl) et donc ses coordonnees dans un fichier ascii, qq'un peut-il m'aider car


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,012 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales