Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Retourner aux forums || Retourner au forum Programmation.c#

Programmation.c# : Codages embrouillés

Posté par Étienne Bersac (Jabber id, page perso, ) le 03 février 2005
Bonjour,

Je commence à m'arracher les cheveux avec les codage.

J'utilise UTF-8. Mon programme fait appele à gocr. Cependant, le résultat de gocr -f UTF8 img.png est différent de gocr img.png | recode ISO-8859-1..UTF-8 !!!

« e\u07ec\uffffeuìIlage côté »
« effeuìIlage côté »

C'est recode qui travaille le mieux.

Seulement voilà, J'aimerai être indépendant de recode. J'aimeria donc passer d'ISO-8859-1 À UTF-8 en utilisant .Net. Mais je butte sur System.Text.Encoder et consorts. Tout d'abord, (mon anglais n'aidant pas) je ne comprend pas les étaps pour passer, par exemple, de ASCII vers UTF-8 : encode pui décode ou l'inverse ?
À priori, je reçoit des octets ASCII que je traduit en char que je traduit en octets UTF-8. Ai-je bon jusque là ?
Ensuite, Il faut écrire le code qui va bien, et là je me perd dans les classes fournies par .Net.

Quelqu'âmes généreuses sauront peut être m'éclairer ?

Merci beaucoup.

--
E Ultreïa !
> Lire le message (6 commentaires, moyenne: 2,2).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

ASCII -> UTF-8

Posté par Krunch (Jabber id, page perso, ) le 03/02/2005 à 15:27. (lien). Évalué à 3.

Vu que UTF-8 est compatible avec ASCII, tu n'as rien a faire pour passer de l'un a l'autre: un texte en ASCII converti en UTF-8 donne la même chose.

--
Free Softwares Users Group Arlon (Sud Luxembourg, Belgique)
pertinent, e adj. Approprié ; qui se rapporte exactement à ce dont il est question.
  • [^]Re: ASCII -> UTF-8

    Posté par Étienne Bersac (Jabber id, page perso, ) le 04/02/2005 à 10:37. (lien). Évalué à 2.

    Bas pourtant, si j'utilise gocr -f UTF8, j'ai un sale résultat, et si j'utilise gocr, tout les caractères accentués passent à la trappe.

    Que faire ? Merci

    --
    E Ultreïa !
    • [^]Re: ASCII -> UTF-8

      Posté par Black Fox (page perso, ) le 11/02/2005 à 09:08. (lien). Évalué à 1.

      L'ASCII n'as jamais contenu de caractères accentués...

Méthode Encoding.Convert

Posté par TImaniac (page perso, ) le 04/02/2005 à 15:28. (lien). Évalué à 3.

http://www.go-mono.com/docs/monodoc.ashx?link=M%3aSystem.Text.Encod(...)
J'ai pas testé mais à prioi il suffit de faire :
Encoding.Convert ( ASCIIEncoding.Default, UTF8Encoding.Default, monTableauDOctetsAConvertir ) ;

sinon ASCIIEncoding.GetEncoding ( nomducode ) à la place de default.

Par contre la méthode convert te retourne toujours un tableau de byte (octet).

Tu peux aussi faire directement : ASCIIEncoding.GetString ( monTableauDOctets ) ;
Ca converti ton tableau en string en supposant que c'est de l'ASCII.
De manière générale :
UnTrucDeriveDeEncoding.GetString ( mesOctets ) ;

  • [^]Re: Méthode Encoding.Convert

    Posté par Étienne Bersac (Jabber id, page perso, ) le 04/02/2005 à 17:21. (lien). Évalué à 2.

    Oui, je pense que c'est une possiblité, mais j'ai du mal à appliquer la notion d'objet à tous cela.

    En effet, je doit d'abord traduire ma chaine ou mon tableau de System.Char en tableau de System.Byte. Or, je doit instancier un encoding car La méthode GetBytes n'est pas static et elle doit être utilise par une instance d'un dérivé d'Encoding.

    Je suppose que je doit faire ceci :


    // Instancier un encodage ASCII (ce qui entre).
    ASCIIEncoding ASCII = new ASCIIEncoding();
    // Instancier un encodage UTF8 (ce qui sort).
    UTF8Encoding UTF = New UTF8Encoding();
    // String -> Byte
    byte[] Octets = ASCII.GetBytes(Texte);
    Octets = Encoding.Convert(ASCIIEncoding.Default, UTF8Encoding.Default, Octets);
    // Byte -> String
    Texte = UTF.GetString(Octets);


    Jusque là, tout va bien. Sauf que ça ne marche pas. Le résultat est le même.

    --
    E Ultreïa !
    • [^]Re: Méthode Encoding.Convert

      Posté par TImaniac (page perso, ) le 04/02/2005 à 20:13. (lien). Évalué à 2.

      En même temps comme expliqué plus haut c'est normal que le résultat soit le même :)
      Tu veux pas filer un morceau de chaîne de caractère que tu voudrais transformer et le résultat que tu attends ? (sous forme de tableau d'octet)

Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.c#