我是否需要做一些特殊的事情来处理ASP.NET中的非拉丁字符集?

时间:2009-11-11 14:15:34

标签: asp.net localization internationalization character-encoding

我收到了客户的以下查询:

  

我正在做一些研究   未来版本的字符集   我们的产品。

     

我们构建的大多数网站都使用   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?

2 个答案:

答案 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往往会这样做。)