我收到了客户的以下查询:
我正在做一些研究 未来版本的字符集 我们的产品。
我们构建的大多数网站都使用 html包含一个元标记 iso-8859-1 - 西欧 拉丁语1字母而不是UTF-8 的unicode。
我已经设置了一个页面来玩这个, 并发现我可以粘贴 富文本的各种脚本 编辑:中文,旁遮普语,阿拉伯语, 罗马尼亚等,没有任何问题和 它们在网页上显示确定(在 火狐/ IE8)。
我的页面有点惊讶 正确渲染这些脚本 因为它们不包括在拉丁文中 字母表。
进一步阅读我看到'这是一个 常见的误解( iso-8859-1 metatag)是必需的,它 不是'
当你的浏览器出现时 它告诉服务器的请求 服务器它想要什么,可以处理。 到浏览器读取时 代码,mimetype已经设置了 字符集。'
所以它似乎是可用的角色 set由Web服务器确定 而不是application / html。
您能否确认这是否正确 - IIS 6/7是否支持此类字符 你已经配置了它,并且做了 你知道有什么问题 在英国广泛使用的语言 在我们的代表 服务器? (亚洲,东欧/西欧, 阿拉伯语等)。
客户的服务器是Windows 2003,其中“区域和语言选项”配置为:
区域选项标签 -
标准和格式:United Kingdom
地点:United Kingdom
语言标签 -
文字服务和输入语言 - English (United Kingdom)
高级标签 -
非unicode程序的语言:English (United Kingdom)
代码页转换表:All checked
(列出了不少内容:日语,韩语,阿拉伯语等)
我是否需要对服务器的配置执行任何操作,或者客户是否通过其web.config
文件中的设置对其进行配置,并确保可能存储非拉丁字符的任何数据库字段都配置为unicode?
答案 0 :(得分:4)
ASP.NET提供默认激活的UTF-8响应。
响应标头中指定的编码,因此您不应该执行任何特殊操作。但是,您可能希望将此标记添加到页眉:
<meta http-equiv="Content-Type" content="text/html"; charset="utf-8">
您可以在web.config中配置此行为:
<configuration>
<system.web>
<globalization
fileEncoding="utf-8"
requestEncoding="utf-8"
responseEncoding="utf-8"
culture="en-US"
uiCulture="de-DE"
/>
</system.web>
</configuration>
请在此处阅读:How to: Select an Encoding for ASP.NET Web Page Globalization
关于数据库字段,如果我们谈论的是SQL Server,那么这些字段必须是 n varchar和 n char,而不是varchar / char。
答案 1 :(得分:1)
同意“开发者艺术”的回答(并投票)。
在这种情况下,即使meta明确地说iso-8859-1(它不应该),但事情仍然有效。
最可能的解释是,Web服务器配置为在Content-Type HTTP响应头中报告utf-8,该头覆盖元(按照标准)。
或者浏览器检测到编码并忽略元(如果有足够的文本可以进行可靠的检测,IE往往会这样做。)