begin process at 2012 05 28 20:57:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Fichier / Disque

 > 

encodage fichier texte en UTF-8


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

encodage fichier texte en UTF-8

lundi 16 février 2004 à 19:33:21 | encodage fichier texte en UTF-8

mark01


Bonjour,

j'ai lu de nombreux messages sur ce sujet mais je ne trouve pas ce qu'il me faut...
Voilà mon problème:
je developpe une appli en deux parties, une partie flash qui lit dans un fichier texte et une partie visual C++ qui écrit le fichier texte en question.
Le probleme est que je dois enregistrer le fichier texte en format UTF-8 pour que flash puisse lire l'accentuation et les caractères spéciaux... Ma question est : y a t'il une fonction ou un moyen quelconque de le faire.
Note: je reccupere les mots avec "GetDlgItemText()", j'ouvre/crée un fichier avec "fopen", je concatene avec la fonction "wsprintf" puis j'écris avec "fprintf". C'est vieux mais c'est comme ça que je sais faire...
Merci pour votre aide.
Mark01.
lundi 16 février 2004 à 23:19:40 | Re : encodage fichier texte en UTF-8

Arnotic

Administrateur CodeS-SourceS
Bonjour,

Avec VC++ est livré un exemple. Tu peux rechercher dans le rep de VC les fichiers utf.c et utf.h.

Voici la procédure récupéré dans le ficheir uft.c qui permet la convertion en utf8. Dessous je te met les declarations des constantes... :

////////////////////////////////////////////////////////////////////////////
//
// UnicodeToUTF8
//
// Maps a Unicode character string to its UTF-8 string counterpart.
//
// 02-06-96 JulieB Created.
////////////////////////////////////////////////////////////////////////////

int UnicodeToUTF8(
LPCWSTR lpSrcStr,
int cchSrc,
LPSTR lpDestStr,
int cchDest)
{
LPCWSTR lpWC = lpSrcStr;
int cchU8 = 0; // # of UTF8 chars generated


while ((cchSrc--) && ((cchDest == 0) || (cchU8 < cchDest)))
{
if (*lpWC <= ASCII)
{
//
// Found ASCII.
//
if (cchDest)
{
lpDestStr[cchU8] = (char)*lpWC;
}
cchU8++;
}
else if (*lpWC <= UTF8_2_MAX)
{
//
// Found 2 byte sequence if < 0x07ff (11 bits).
//
if (cchDest)
{
if ((cchU8 + 1) < cchDest)
{
//
// Use upper 5 bits in first byte.
// Use lower 6 bits in second byte.
//
lpDestStr[cchU8++] = UTF8_1ST_OF_2 | (*lpWC >> 6);
lpDestStr[cchU8++] = UTF8_TRAIL | LOWER_6_BIT(*lpWC);
}
else
{
//
// Error - buffer too small.
//
cchSrc++;
break;
}
}
else
{
cchU8 += 2;
}
}
else
{
//
// Found 3 byte sequence.
//
if (cchDest)
{
if ((cchU8 + 2) < cchDest)
{
//
// Use upper 4 bits in first byte.
// Use middle 6 bits in second byte.
// Use lower 6 bits in third byte.
//
lpDestStr[cchU8++] = UTF8_1ST_OF_3 | (*lpWC >> 12);
lpDestStr[cchU8++] = UTF8_TRAIL | MIDDLE_6_BIT(*lpWC);
lpDestStr[cchU8++] = UTF8_TRAIL | LOWER_6_BIT(*lpWC);
}
else
{
//
// Error - buffer too small.
//
cchSrc++;
break;
}
}
else
{
cchU8 += 3;
}
}

lpWC++;
}

//
// Make sure the destination buffer was large enough.
//
if (cchDest && (cchSrc >= 0))
{
SetLastError(ERROR_INSUFFICIENT_BUFFER);
return (0);
}

//
// Return the number of UTF-8 characters written.
//
return (cchU8);
}

//
// Constant Declarations.
//

#define ASCII 0x007f

#define SHIFT_IN '+' // beginning of a shift sequence
#define SHIFT_OUT '-' // end of a shift sequence

#define UTF8_2_MAX 0x07ff // max UTF8 2-byte sequence (32 * 64 = 2048)
#define UTF8_1ST_OF_2 0xc0 // 110x xxxx
#define UTF8_1ST_OF_3 0xe0 // 1110 xxxx
#define UTF8_TRAIL 0x80 // 10xx xxxx

#define HIGER_6_BIT(u) ((u) >> 12)
#define MIDDLE_6_BIT(u) (((u) & 0x0fc0) >> 6)
#define LOWER_6_BIT(u) ((u) & 0x003f)

#define BIT7(a) ((a) & 0x80)
#define BIT6(a) ((a) & 0x40)

Voilà, avec tout ceci tu est capable d'encoder du texte en UFT8.

@+
Arnotic
Admin CS, MVP Visual C++


Cette discussion est classée dans : fichier, texte, partie, utf, encodage


Répondre à ce message

Sujets en rapport avec ce message

changer l'encodage d'un fichier texte [ par snake57 ] Bonjour à tous, J'ai un fichier texte que je suis obligé d'ouvrir dans le format d'encodage latin 1. J'aimerais faire en C l'une des deux choses sui Modification virgule fichier .txt [ par necromoine ] Bonjour, je souhaite faire un code qui permet de mettre un retour à la ligne apres chaque virgule d'un fichier texte, qui ressemblerait à : Contenu t Lire une matrice dans un fichier texte en mémorisant les chiffres dans un tableau [ par LaamZ ] Bonjour, J'aimerai savoir comment lire une matrice dans un fichier texte comme ceci: 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 1 1 1 1 1 1 1 1 1 3 UTF_8 vers UNICODE [ par mervat ] salut, j'ai une question et j'espère avoir la réponse qui pourra tellement m'aider. je veux copier le contenu d'un fichier UTF-8 dans un fichier UNICO comparer les mots d'un fichier texte aux éléments d'une liste chaînée (c++) [ par mervat ] [^^happy10] ce programme permet de créer une liste de mots à partir d'un fichier texte"in1" et puis éliminer les mots qui existent dans la liste du fi Ecriture Fichier Texte (avec ofstream) [ par baptchr55 ] Bonjour à tous... Je souhaiterais stocker dans un fichier texte l'ensemble des données que je reçois (par le biais d'un socket cpp). à savoir j'ai es lire d'un fichier texte en c++ [ par sny2009 ] Bonjour, comment on peut lire le fichier a une position donnée et nombre de caractère donner en c++? D'avance merci pour votre aide Qt: QTextEdit [ par suxxa ] Bonjour à tous, Je suis actuellement en train de faire une petite application en C++ avec Qt, seulement je me pose une question à laquelle j'aimerai algorithme de conversion d' un fichier binaire en fichier texte [ par hadja123 ] bonjour; je recherche des algorithmes de conversion d' un fichier binaire en du fichier texte cordialement lire d'un fichier texte en c++ [ par sny2009 ] Bonjour, Je rencontre un problème avec la fonction fread Je veux lire un nombre de caractère N de fichier texte voila le code : [b]nb_car_lu=fread


Nos sponsors


Sondage...

Comparez les prix

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 : 0,983 sec (3)

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