什么是字符编码?

时间:2010-07-02 15:22:31

标签: encoding character-encoding

我有几个字符无法正确识别。 字符如:

º
á
ó
(etc..)

这意味着字符编码不是utf-8对吗? 那么,你能告诉我它的字符编码是什么吗?

4 个答案:

答案 0 :(得分:5)

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

如果您知道意味着什么以及它们如何以二进制形式表示,那么应该建议编码......但是,我们需要了解更多信息。< / p>

答案 1 :(得分:3)

首先阅读http://www.joelonsoftware.com/articles/Unicode.html

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

答案 2 :(得分: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();
        }

答案 3 :(得分:1)

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

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

您访问的网址:www.example.com,可能有搜索工具通过网址运行自定义搜索:

www.example.com?search=...

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

www.example.com?search=cat food cheap

由于您使用了''(空格)

的无效字符,浏览器无法理解您的请求

要更正此编码错误,您应该将''与'%20'交换为此网址:

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

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

祝你好运!