2010-07-02 4 views
-1

J'ai plusieurs caractères qui ne sont pas reconnus correctement. Des personnages tels que:Quel est le codage de caractères?

 
º 
á 
ó 
(etc..) 

Cela signifie que les caractères de codage n'est pas utf-8 droit? Alors, pouvez-vous me dire quel encodage de caractères pourrait-il être s'il vous plaît.

Répondre

3

lire ce premier http://www.joelonsoftware.com/articles/Unicode.html

Il y a deux codages: celui qui a été utilisé pour coder la chaîne et qui est utilisé pour décoder la chaîne. Ils doivent être les mêmes pour obtenir le résultat attendu. Si elles sont différentes, certains caractères ne s'afficheront pas correctement. nous pouvons essayer de deviner si vous publiez les résultats réels et attendus.

5

Nous n'avons pas assez d'informations pour vraiment répondre à cette question, mais l'essentiel est: vous ne devriez pas deviner. Vous devez déterminer d'où proviennent les données et découvrir l'encodage. Vous ne nous avez pas dit quoi que ce soit sur la source de données, donc nous sommes complètement dans le noir. Vous pourrait vouloir essayer Encoding.Default si ce sont des fichiers enregistrés avec quelque chose comme le Bloc-notes.

Si vous savez ce que les caractères sont signifiait être et comment ils sont représentés en binaire, cela devrait suggérer un encodage ... mais encore une fois, nous aurions besoin de savoir plus d'informations.

+0

Je ne peux donner que des exemples ... Car je ne sais pas aussi. Ils sont transportés à partir d'un programme nommé Kondor et je n'ai pas accès à son code source! –

+0

@aF: c'est pourquoi j'ai écrit les méthodes présentées dans la réponse ci-dessous en premier lieu. Parfois, un algorithme heuristique est la seule solution pratique. –

3

J'ai écrit quelques méthodes pour affiner les possibilités il y a quelques temps pour des situations comme celle-ci.

static void Main(string[] args) 
     { 
      Encoding[] matches = FindEncodingTable('Ÿ'); 
      Encoding[] enc2 = FindEncodingTable(159, 'Ÿ'); 
     } 
     // Locates all Encodings with the specified Character and position 
     // "CharacterPosition": Decimal position of the character on the unknown encoding table. E.G. 159 on the extended ASCII table 
     //"character": The character to locate in the encoding table. E.G. 'Ÿ' on the extended ASCII table 
     static Encoding[] FindEncodingTable(int CharacterPosition, char character) 
     { 
      List matches = new List(); 
      byte myByte = (byte)CharacterPosition; 
      byte[] bytes = { myByte }; 
      foreach (EncodingInfo encInfo in Encoding.GetEncodings()) 
      { 
       Encoding thisEnc = Encoding.GetEncoding(encInfo.CodePage); 
       char[] chars = thisEnc.GetChars(bytes); 
       if (chars[0] == character) 
       { 
        matches.Add(thisEnc); 
        break; 
       } 
      } 
      return matches.ToArray(); 
     } 
     // Locates all Encodings that contain the specified character 
     static Encoding[] FindEncodingTable(char character) 
     { 
      List matches = new List(); 
      foreach (EncodingInfo encInfo in Encoding.GetEncodings()) 
      { 
       Encoding thisEnc = Encoding.GetEncoding(encInfo.CodePage); 
       char[] chars = { character }; 
       byte[] temp = thisEnc.GetBytes(chars); 
       if (temp != null) 
        matches.Add(thisEnc); 
      } 
      return matches.ToArray(); 
     } 
1

Le codage est la forme de modification d'un contenu existant; ce qui lui permet d'être analysé par les protocoles de destination requis.

Un exemple de codage peut être vu lorsque vous naviguez sur Internet:

L'URL que vous visitez le site: www.example.com, peut avoir la possibilité de recherche pour effectuer des recherches personnalisées via l'adresse URL:

www.example.com?search=... 

Les variables suivantes sur l'URL nécessitent un codage d'URL. Si vous devais écrire:

www.example.com?search=cat food cheap 

Le navigateur ne comprend pas votre demande que vous avez utilisé un caractère non valide de « » (un espace blanc)

Pour corriger cette erreur de codage, vous devez échanger le ' 'avec « % 20 » pour former cette URL:

www.example.com?search=cat%20food%20cheap 

Les différents systèmes utilisent différentes formes de codage, dans cet exemple, je l'ai utilisé codage standard Hex pour une URL. Dans d'autres applications et instances, vous devrez peut-être utiliser d'autres types de codage.

Bonne chance!