【问题标题】:HTML Encode very strange characters after decoded by ipBoardipBoard解码后的HTML编码非常奇怪的字符
【发布时间】:2011-01-19 20:04:06
【问题描述】:

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

( ゚ Д゚)

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

我用过:

Server.HTMLDecode (and) HTMLEncode 

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

您以前有过这方面的经验并想详细说明吗?

【问题讨论】:

  • 它看起来像一个二进制数据。我删除了cryptography 标签,因为文本编码与它无关。我想你也应该从标题中删除它,或者解释更多
  • @Darine:我希望我有更多的细节要添加......我希望我有更多的代码可以添加到这个特定的问题......
  • @Darine: :( 我知道.. 我知道.. 这不是一个简单的问题,因为我们中没有多少人在我们的职业生涯中处理过日语编码字符.. 没关系,Darine。不用担心。

标签: c# html-encode


【解决方案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);

【讨论】:

    【解决方案2】:

    如果您查看 ゚ Д゚ 的 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">
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多