Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Convertir UTF8 vers Latin

17 réponses
Avatar
Julien
bonjour

je cherche à convertir un texte du type "fran%C3%A7ais" vers
"français", pour cela j'ai trouver un bout de code qui semble faire ce
que j'ai besoin mais je n'arrive pas à le faire fonctionner (je
debute)

int
UTF8Toisolat1(unsigned char* out, int outlen, unsigned char* in, int
*inlen)
{
unsigned char* outstart= out;
unsigned char* outend= out+outlen;
unsigned char* inend= in+*inlen;
unsigned char c;

while (in < inend) {
c= *in++;
if (c < 0x80) {
if (out >= outend) return -1;
*out++= c;
}
else if (in == inend) {
*inlen -= 1;
break;
}
else if (((c & 0xFC) == 0xC0) && ((*in & 0xC0) == 0x80)) {
/* a two byte utf-8 and can be encoding as isolate1 */
*out++= ((c & 0x03) << 6) | (*in++ & 0x3F);
}
else return -2;
/* TODO : some should be represent as "&#x____;" */
}
return out-outstart;
}

est-ce que quelqu'un pourrait m'aider ?

10 réponses

1 2
Avatar
Erwann ABALEA
Bonjour,

On Sun, 8 May 2005, Julien wrote:

je cherche à convertir un texte du type "fran%C3%A7ais" vers
"français", pour cela j'ai trouver un bout de code qui semble faire ce
que j'ai besoin mais je n'arrive pas à le faire fonctionner (je
debute)


Pourquoi réinventer la roue? Utilise GNU libiconv.

--
Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5
-----
Sur IE 4.0 comment faire pour poster un message dans plusieurs forums
et avec la réponse dans un seul? Je viens de réussir le contraire!
-+- RG in <http://neuneu.mine.nu&gt; : Le crosspost pour les nuls -+-

Avatar
Julien
Re:

je ne connait pas cette librairie, elle à l'air complete, voir
trop pour le peu que j'ai à lui demander.
je fait un programme hyper light et ne voudrai pas l'encombrer d'un
tas de librairie... je pense qu'avec l'exemple de code dans mon
precedent post je ne doit pas etre loing du but mais je ne suit pas
expert.
n'y a t'il donc pas possibilité de la faire fonctionner pour convertir
uniquement UTF8 vers latin1 (iso-8859-1) ?

Cdt
Bonjour,

On Sun, 8 May 2005, Julien wrote:

je cherche à convertir un texte du type "fran%C3%A7ais" vers
"français", pour cela j'ai trouver un bout de code qui semble faire ce
que j'ai besoin mais je n'arrive pas à le faire fonctionner (je
debute)


Pourquoi réinventer la roue? Utilise GNU libiconv.



Avatar
Stephane Legras-Decussy
Erwann ABALEA a écrit dans le message :

Pourquoi réinventer la roue?


pour devenir un bon programmeur...

Avatar
Stephane Legras-Decussy
Julien a écrit dans le message :

int
UTF8Toisolat1(unsigned char* out, int outlen, unsigned char* in, int
*inlen)


déjà les parametres sont pas clairs...

je suppose que les blocs mémoire out et in sont déja réservés.

int UTF8toISOLAT1(char *in, char *out, int *outlen)

me parait mieux...

la longueur de in étant connue par un strlen(in) interne à la fonction...

ensuite il faut que tu connaisses la méthode de conversion, savoir
le faire à la main...

perso, je connais pas... tu as un lien ?

Avatar
Julien
re:

le seul truc que j'ai trouver c'est
http://apia.u-strasbg.fr/vrml/utile/special.html

mais la encore dans les exemples en C je ne m'en sort pas
(j'suis vraiment nul je sait)

merci pour votre aide

déjà les parametres sont pas clairs...

je suppose que les blocs mémoire out et in sont déja réservés.

int UTF8toISOLAT1(char *in, char *out, int *outlen)

me parait mieux...

la longueur de in étant connue par un strlen(in) interne à la fonction...

ensuite il faut que tu connaisses la méthode de conversion, savoir
le faire à la main...

perso, je connais pas... tu as un lien ?









Avatar
Erwann ABALEA
Bonsoir,

On Sun, 8 May 2005, Julien wrote:

On Sun, 8 May 2005, Julien wrote:

je cherche à convertir un texte du type "fran%C3%A7ais" vers
"français", pour cela j'ai trouver un bout de code qui semble faire ce
que j'ai besoin mais je n'arrive pas à le faire fonctionner (je
debute)


Pourquoi réinventer la roue? Utilise GNU libiconv.


je fait un programme hyper light et ne voudrai pas l'encombrer d'un
tas de librairie... je pense qu'avec l'exemple de code dans mon
precedent post je ne doit pas etre loing du but mais je ne suit pas
expert.


Si tu veux être certain que ton programme ne va pas se vautrer dès qu'un
utilisateur lui donnera quelque chose qui sera de l'UTF-8 que tu ne
connais pas, tu as 2 solutions:
- utiliser une bibliothèque qui sait faire le boulot
- te taper la lecture du standard UTF-8

n'y a t'il donc pas possibilité de la faire fonctionner pour convertir
uniquement UTF8 vers latin1 (iso-8859-1) ?


Si, c'est du LGPL, donc modifiable. Je l'ai fait, pour un vieux PC sous
DOS, limité à des segments de 64k (pas de 386, non).

--
Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5
-----
PS> Salut ! J'ai un sujet de philo à vous soumettre : "Suffit-il
PS> d'observer pour connaître" Idées + plan Merçi
Oui, ya qu'a t'observer pour connaître le fait que tu es une feignasse.
-+- FF in: Guide du Neuneu d'Usenet - Neuneu fait de la philo -+-



Avatar
Erwann ABALEA
On Sun, 8 May 2005, Stephane Legras-Decussy wrote:

Erwann ABALEA a écrit dans le message :

Pourquoi réinventer la roue?


pour devenir un bon programmeur...


Et il va écrire son parseur XML aussi, et son propre serveur web, ses
routines crypto, et tutti quanti? ;)

--
Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5
-----
Si, en plus, vous cryptez les messages de la bague en PGP, et
utilisez un réseau de pigeons remailers, vous pouvez garantir votre
anonymat le plus total.
-+- CdO in GNU : Le colombocryptophile anonyme -+-


Avatar
Julien
Pourquoi réinventer la roue?


pour devenir un bon programmeur...


Et il va écrire son parseur XML aussi, et son propre serveur web, ses
routines crypto, et tutti quanti? ;)


j'ai juste besoin de convertir une chaine UTF8 en quelque chose de
lisible. j'ai bien regarder libiconv et j'ai franchement pas envie de
l'utiliser car mon programme est bien trop ridicule et en temps
que debutant je me refuse de presenter à mon entourage
mon bout de code de 20 ligne poluer par une librairie de
1 000 000 de lignes de code pour JUSTE convertir une chaine
UTF8 en ISO-8859-1
surtout que j'ai trouver pas mal d'exemple (dont je ne comprend rien)
mais qui apparement doit fonctionner.

je demande juste à un expert de m'aider à le faire fonctionner



Avatar
Antoine Leca
En <news:, Julien va
escriure:
je me refuse de presenter à mon entourage
mon bout de code de 20 ligne poluer par une librairie de
1 000 000 de lignes de code pour JUSTE convertir une chaine
UTF8 en ISO-8859-1


Si tu écris en C, tu « pollues » ton programme Hello.c de 5 lignes avec les
100.000 (et je ne galège pas) lignes de la bibliothèque C, libc ou quelle
qu'elle soit.


je demande juste à un expert de m'aider à le faire fonctionner


Ce que tu demandes « à faire fonctionner » a mis deux ans à être mis au
point par *plusieurs* experts de Netscape, aidés par des bonnes volontés
extérieures.

OK, la solidité du résultat n'a rien à voir avec ce à quoi tu penses
actuellement (par exemple, tu ne penses pas à des choses comme CodeRed, qui
est pourtant une application pratique TRÈS proche de ton « problème » et de
comment le prendre le défaut ;-)), et de plus l'environnement (Communicator
4.x) dans lequel se débataient les dits programmeurs n'a rien à voir avec le
tien. Mais c'est pour t'expliquer que la difficulté de ton problème n'est
pas vraiment bordée, donc parfois il faut savoir être humble, et accepter de
penser que d'autres ayant déjà trimmé, on peut peut-être leur faire la
faveur de réutiliser leur travail.


Antoine

Avatar
Harpo
Antoine Leca wrote:

Mais c'est pour t'expliquer
que la difficulté de ton problème n'est pas vraiment bordée, donc
parfois il faut savoir être humble, et accepter de penser que d'autres
ayant déjà trimmé, on peut peut-être leur faire la faveur de
réutiliser leur travail.


Un préalable à tout développement est une utilisation intensive de
Google.

Réinventer la roue est une très bonne chose pour apprendre, pourvu qu'on
arrive à la faire tourner. Pour l'OP qui dit débuter en C, ça peut être
une bonne chose; mais il faut, amha, augmenter la difficulté
progressivement. Il n'est en général pas besoin de faire appel au news
pour avoir un bout de code qui tourne.
On peut aussi réinventer la roue juste pour le fun ...

Sinon, le fait d'utiliser une grosse bibliothèque est typiquement un
mauvais argument, surtout si on n'y est pas linké statiquement. C'est
aussi très instructif de voir la manière dont d'autres ont résolu des
problèmes.

A moins qu'il n'y ait un manque de bibliothèques implémentant les
fonctionnalités requises ou un mauvais comportement de celles-ci, il
est aventureux de vouloir faire mieux, même si elles ont des bugs
pourvu qu'ils soient connus et circonscrits.
Le nombre de bugs croît généralement avec le code développé, il me
semble donc préférable d'éviter d'écrire du code sinon pour innover.

--
Patrick.
http://patrick.davalan.free.fr/

1 2