2010-07-02 125 views
-1

我有几个字符不能正确识别。 字符,如:什么是字符编码?

 
º 
á 
ó 
(etc..) 

这意味着字符编码不是UTF-8正确? 那么,你能告诉我什么字符编码可以请。

回答

3

读取该第一http://www.joelonsoftware.com/articles/Unicode.html

有两种编码:这是用于编码字符串和用于解码串的一个的一个。他们必须是相同的才能获得预期的结果。如果它们不同,则某些字符将显示不正确。我们可以尝试猜测您是否发布了实际和预期的结果。

5

我们没有足够的信息来真正回答这个问题,但其要点是:您不应该只是猜测。你需要计算出数据来自哪里,并找出编码是什么。你还没有告诉我们什么关于数据源,所以我们完全处于黑暗中。你可能想尝试Encoding.Default如果这些文件是用记事本保存的。

如果您知道意思是是什么,以及它们是如何用二进制表示的,那么应该提示编码...但是,我们需要了解更多信息。

+0

我只能举例。因为我也不知道。它们是从一个名为Kondor的程序运输而来的,我无法访问它的源代码! – 2010-07-02 15:29:34

+0

@aF:这就是为什么我首先写出了答案中提出的方法。有时启发式算法是唯一实用的解决方案。 – 2010-07-02 17:20:00

3

我写了一些方法来缩小可能性,而这种情况就像这样。

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

编码是修改某些现有内容的形式;从而允许它被所需的目标协议解析。

编码的例子可以浏览互联网时可以看到:

您访问的网址:www.example.com,可有搜索工具,通过URL地址来运行定制搜索:

www.example.com?search=... 

URL上的以下变量需要URL编码。如果你是写:

www.example.com?search=cat food cheap 

因为你已经使用的“无效字符,浏览器就不会明白你的要求”(一个空格)

要纠正这个错误编码应交换“ '与‘%20’,以形成此URL:

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

不同的系统使用不同的编码形式,在这个例子中我已经使用标准十六进制编码的URL。在其他应用程序和实例中,您可能会发现需要使用其他类型的编码。

祝你好运!

相关问题