【问题标题】:Character encoding works locally not live字符编码在本地工作而不是现场
【发布时间】:2012-05-08 07:25:39
【问题描述】:

我正在从数据库中返回一些数据,这些数据是使用许多不同的方法输入的,通常是从 word 中复制和粘贴的。

我没有尝试手动对每个最后一个字符进行 HtmlEncode 编码,而是使用页面上的内容类型来加载不同的字符集。目前我没有做任何事情来覆盖任何默认的内容类型。如果我在本地运行,内容类型显示为 utf-8 并出现“外来”字符。上传后,内容类型恢复为 ISO-8859-1,“外来”字符显示为问号(有两种......)。

然后我覆盖了使用 Response.Charset = "utf-8"; 返回的字符集,尽管响应标头正确显示 utf-8,但我仍然得到问号来代替正确的字符。请看下面的图片:

本地页面

本地页眉

外部页面(注意两种问号)

外部页眉

我关注了http://htmlpurifier.org/docs/enduser-utf8.html,但除了需要 UTF-8 之外,我找不到任何解决方案。

【问题讨论】:

  • 页面上是否有元内容类型元素?
  • 是的,设置为相同的 utf-8。
  • 浏览器将代码页显示为什么?
  • 对不起,你能稍微扩展一下,你的意思是源代码是什么样的?如果是这样,它在源代码中具有相同的问号和问号菱形。
  • 我的意思是浏览器将页面解释为什么-您更改浏览器中的编码并查看会发生什么(您还应该能够看到浏览器当前使用)。

标签: c# asp.net character-encoding http-headers content-type


【解决方案1】:

解决了。仍然不完全确定一切是如何工作的,但我会解释我做了什么。

尽管标题说内容类型是 UTF-8,但这并没有解决问题。正如 Oded 所暗示的那样,我在 IIS > .Net Globalization 中找到了两个设置为 ISO-8859-1 的设置(请求和响应)。

将这些更改为 UTF-8 解决了这个问题。

至于为什么,我不确定,因为标题似乎相同,所以如果有人能解释发生了什么,那就太好了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    • 2021-10-21
    • 2017-01-19
    • 1970-01-01
    • 2014-05-18
    • 2013-06-13
    相关资源
    最近更新 更多