Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Fichier UTF8 [ Windows / Fichier & Disque ] (nicompx)

vendredi 5 janvier 2007 à 16:23:17 | Fichier UTF8

nicompx

Bonjour,

J'ai besoin de créer un fichier UTF8 en C, comment faire?
En sachant que j'utilise les fonctions suivantes :

fichier = fopen(cName,"w");
fwrite("cTextes",1,sizeof(cTextes),fichier);
fclose(fichier);

Merci d'avances



>> NiCoMpX <<

vendredi 5 janvier 2007 à 18:57:26 | Re : Fichier UTF8

SAKingdom

Membre Club
C'est pas pour ton problème de codage UTF8 mais:

fwrite("cTextes",1,sizeof(cTextes),fichier);

sizeof(cTextes) !!!!!! cTexte n'est pas une variable. Il doit y avoir des érreurs à la compilation non? Et même si il s'agissait d'un char *, un char * vaut TOUJOURS 4 octets en 32bits car c'est un pointeur. Pour avoir la taille d'une chaine contenue dans un tableau ou pointé par un char *, on utilise strlen ou on fait sa propre fonction ou macro.
Il y a certaines exeptions où utiliser sizeof serais beaucoup plus rapide
 exemple:
char toto[] = "salut a tous";
Dans ce cas présent, toto contien exactement le bon nombre de caractère+1 (caractère de fin de chaine). On peut donc faire sizeof(toto)-1 étant donné qu'il s'agit de char (1 octet)

Sinon, on écrit la taille manuellement:
fwrite("cTextes",1,7,fichier);  ça devrais mieu fonctionner ainsi.


C++ (@++)


samedi 6 janvier 2007 à 11:10:16 | Re : Fichier UTF8

ShareVB

salut,

regarde l'api MultiByteToWideChar :
http://msdn2.microsoft.com/en-us/library/ms776413.aspx
http://www.codyx.org/snippet_ainsi-vers-utf8-vice-versa_54.aspx (dsl mais en vb6)

ShareVB

mardi 9 janvier 2007 à 16:03:40 | Re : Fichier UTF8

nicompx

Est-ce que quelqu'un à un exemple en C ???

Merci d'avance.

>> NiCoMpX <<

mardi 9 janvier 2007 à 20:28:20 | Re : Fichier UTF8

ShareVB

salut,

l'important n'est pas tant le langage mais l'ALGO et en gros, voir ce qui est passé à l'api pour tester...

sinon :
http://www.experts-exchange.com/Programming/Programming_Languages/Cplusplus/Q_21439089.html
http://www.codeguru.com/forum/archive/index.php/t-231165.html
http://www.codase.com/search/call?name=MultiByteToWideChar

si j'ai 5 minutes, je traduirais le snippet sur codyx...

ShareVB

mercredi 10 janvier 2007 à 09:49:44 | Re : Fichier UTF8

nicompx

Merci, j'attend la traduction.

>> NiCoMpX <<

jeudi 11 janvier 2007 à 22:04:03 | Re : Fichier UTF8

ShareVB

salut,

je vais le mettre ici d'abord pour test :

#include <windows.h>

DWORD WToUTF8(LPWSTR wText,LPSTR szBuff,DWORD cbBuff)
{
    DWORD vSize = lstrlenW(wText);
    ZeroMemory(szBuff,cbBuff*sizeof(char));
    return WideCharToMultiByte(CP_UTF8, 0, wText, vSize, szBuff, cbBuff, NULL, NULL);
}

DWORD UTF8ToW(LPSTR wText,LPWSTR wszBuff,DWORD ccBuff)
{
    DWORD vSize = lstrlenA(wText);
    ZeroMemory(wszBuff,ccBuff*sizeof(WCHAR));
    return MultiByteToWideChar(CP_UTF8, 0, wText, vSize, wszBuff, ccBuff);
}

DWORD WToOEM(LPWSTR wText,LPSTR szBuff,DWORD cbBuff)
{
    DWORD vSize = lstrlenW(wText);
    ZeroMemory(szBuff,cbBuff*sizeof(char));
    return WideCharToMultiByte(CP_OEMCP, 0, wText, vSize, szBuff, cbBuff, NULL, NULL);
}

DWORD OEMToW(LPSTR wText,LPWSTR wszBuff,DWORD ccBuff)
{
    DWORD vSize = lstrlenA(wText);
    ZeroMemory(wszBuff,ccBuff*sizeof(WCHAR));
    return MultiByteToWideChar(CP_OEMCP, 0, wText, vSize, wszBuff, ccBuff);
}

int _tmain(int argc, _TCHAR* argv[])
{
    LPSTR sz = "EBArtSoft%20-%20éà éçڳگÚ|à?";
    char szBuff[256];
    WCHAR wszBuff[256];
    UTF8ToW(sz,wszBuff,256);
    WToOEM(wszBuff,szBuff,256);

    printf(
        "Original : %s\n"
        "LPSTR : %s\n"
        "LPWSTR : %ws\n",
        sz,
        szBuff,
        wszBuff
    );

    getchar();

    return 0;
}

ShareVB

mercredi 24 janvier 2007 à 11:42:17 | Re : Fichier UTF8

nicompx


Salut,

Merci beaucoup pour la traduction.
Ce qui m'intéresse c'est la convertion UTF8, je viens de la tester et je pense qu'il y a un problème.


>> NiCoMpX <<

jeudi 25 janvier 2007 à 10:32:46 | Re : Fichier UTF8

ShareVB

salut,

il y a un problème...il y en a peut être même plusieurs...mais lesquels :)) ...le seul problème que je vois c'est l'affichage dans la console qui effectivement ne se fait pas bien mais ca vient de la console qui est en OEM je crois...si tu mets un break point sur le printf et que tu regardes le contenu de sz, szBuff et wszBuff je pense que le résultat est correcte...

sinon détailles le problème...

ShareVB

vendredi 26 janvier 2007 à 09:48:46 | Re : Fichier UTF8

nicompx

Salut,

J'aimerais faire l'inverse, c-à-d convertire une string en UTF8.
As-tu testé la conversion d'une string en UTF8?
Quand tu regarde la différence entre une string (normale) et une string encodée en UTF8 tu remarque que chaques caractères est suivit de 0x00.

HELP HELP  !!!!!!   ;-)

Merci d'avance,


>> NiCoMpX <<


1 2

Cette discussion est classé dans : fichier, utf8, ctextes


Répondre à ce message

Sujets en rapport avec ce message

Suprimmer un fichier [ par naney ] tout d'abort un grand merci au webmaster de ce site :D car j'en avais mare de cherche un site comme vbfranc.com mais qui parler du c et du c++Je cherc copier un fichier [ par naney ] je cherche la fonction pour copier un fichier merci a celui ou a celle qui va me repondre@+ tout le monde desinstallateur [ par naney ] Je veut faire un desinstalleur mais je suis obliger de m'aitre le dessinstallateir dans le repertoire des fichier que je veut suprimmer j'ai eseaille compression et decompression d'un fichier [ par asma ] salut tt le monde , vous pouvez me filer un coup de main les gars ?? je veux une astuce pour compresser et decompresser un fichier (EN C++ evidemment Problème avec traitement de fichier (cplusplus !) [ par Sianrin ] Voila, j'explique mon problème. Pour voir un peu comment les accès au fichiers se géraient en cplusplus, je me suis mis en tête de faire un programme modification d'un fichier .exe [ par jackky ] salut je voulais savoir comment faire un fichier .exe en c++(crack) pour changer un saut dans un fichier .exeexemple00401595 7416 je 004015ADCHANGER Chui ds la doumaye!! [ par Rom1 ] Salut a vous les masters du C/C++!! Moi chui k'1 pti jeuno du C qui a commencé cette année...éh oui!Je suis en ce moment en stage, et je développe une comment faire??? [ par slim ] Bonjour!je voudrais bien savoir comment convertir un fichier texte en un fichier Access en utilisant un programme C++!j'aimerais bien encore savoir co fichiers sequenciels/turbo c++ 2.0 [ par Jbx2001 ] J'ai un probléme:j'aimerai lire un fichier contenant des caractéres et des nombres de types flottants.Dans un fichier,j'ai noté différentes coordonnée ecriture fichier txt turboC++ [ par idk ] qqun connais une fonction, qui te place le cursor, (dans un fichier),CAD qui renvoie à la ligne suivante exemple char prenom="tom"char nom="bauq" Et d


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,265 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.