HTML在ipBoard解码后编码非常奇怪的字符

时间:2011-01-19 20:04:06

标签: c# html-encode

我以前从未见过这些角色。我从IPBoard数据库中读出信息并将其显示在我的页面上。我看到的是:

( ゚ Д゚)

而不是这个(゚Д゚)
现在小心,这不是你在日本笑脸中看到的空间

我用过:

Server.HTMLDecode (and) HTMLEncode 

但在这种情况下它们不起作用。

您之前是否有过这方面的经验并希望详细说明?

2 个答案:

答案 0 :(得分:1)

如果你看一下 ゚ Д゚的UTF-8编码的bin-hex表示,那么它看起来像:

ef bc 88 e3 80 80 ef be 9f 20 d0 94 ef be 9f ef bc 89

我将此数据解释为Windows-1252编码的字符串,然后得到:

( ゚ Д゚)

所以看起来IPBoard数据库返回一个UTF-8编码的字符串,服务器或浏览器将其解释为Windows-1252字符串。

如果是浏览器,请确保http响应标头指示响应为UTF-8 Content-Type: text/html; charset=utf-8或在html标头中添加以下元标记:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

答案 1 :(得分:1)

您遇到编码问题。序列需要读作UTF-8:

        byte[] bytes = {
                           0xEF, 0xBC, 0x88, 0xE3,
                           0x80, 0x80, 0xEF, 0xBE,
                           0x9F, 0x20, 0xD0, 0x94,
                           0xEF, 0xBE, 0x9F, 0xEF,
                           0xBC, 0x89, 0x0D, 0x0A,
                           0xEF, 0xBE, 0x9F
                       };
        string t = System.Text.Encoding.UTF8.GetString(bytes);
        System.Diagnostics.Trace.WriteLine(t);