字符编码在本地不起作用

时间:2012-04-27 14:24:34

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

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

不是尝试手动HtmlEncode每个最后一个字符,我有一个好主意,使用页面上的内容类型加载不同的字符集。目前我没有做任何事情来覆盖任何默认内容类型。如果我在本地运行,则内容类型显示为utf-8,并显示“外来”字符。上传时,内容类型以ISO-8859-1的形式返回,“外国”字符显示为问号(两种......)。

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

本地页面

Local page, all characters appearing correctly

本地页面标题

Local page header

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

External page, notice two types of error question marks

外部页面标题

External page header

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

1 个答案:

答案 0 :(得分:0)

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

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

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

至于为什么,我不确定,因为标题看起来是一样的,所以如果有人能够解释发生的事情会很棒。