允许简体中文输入

时间:2012-03-23 18:48:28

标签: c# asp.net sql-server-2005 globalization cjk

我所工作的公司正在竞标一个项目,该项目要求我们的电子商务解决方案接受简体中文输入。经过一番研究后,似乎ASP.net使全球化配置变得简单:

<configuration>
  <system.web>
    <globalization
      fileEncoding="utf-8"
      requestEncoding="utf-8"
      responseEncoding="utf-8"
      culture="zh-Hans"
      uiCulture="en-us" />
  </system.web>
</configuration>

问题:

  1. 这真的是ASP.net中的全部内容吗?这似乎很好。
  2. SQL Server 2005是否有任何数据库注意事项? DB是否会接受简体中文而无需额外配置?

2 个答案:

答案 0 :(得分:6)

广告1.真正的问题是,您希望在多大程度上实现国际化。因为i18n不仅允许Unicode输入。您至少需要支持本地日期,时间和数字格式,本地排序规则(主要与排序相关)并确保您的应用程序在本地化操作系统上正确运行(除非您正在开发Cloud aka托管解决方案)。您可能想要阅读有关here主题的更多信息。

对汉字输入的支持,如果你打算在中国提供软件,你至少需要支持GB18030-2000。要做到这一点,您需要使用正确的.Net Framework版本 - 支持Unicode 3.0的版本。我相信它自.Net Framework 2.0以来就得到了支持 但是,如果您想更进一步(可能需要获得竞争优势),您可能需要支持GB18030-2005。唯一的问题是,对这些字符(CJK统一表意文字扩展B)的完全支持在此过程中发生(我不确定它是Unicode 6.0还是Unicode 6.1)。因此,您可能被迫使用最新的.Net Framework,但仍不确定它是否涵盖了所有内容 您可能需要阅读Unicode FAQ on Han characters

广告2.我强烈建议您不要将SQL Server 2005与中文字符一起使用。原因是,旧的SQL Server引擎仅支持UCS-2而不支持UTF-16。这可能看起来略有不同,但这确实引起了4字节汉字表意文字的问题。实际上,您希望能够在查询中使用它们(即LIKE或WHERE子句) - 您将收到所有记录。这就是它的工作原理。为了支持他们,你需要设置非常具体的中文整理,这将简单地打破对其他语言的支持 基本上,使用带有中文表意文字的SQL Server 2005 错误想法

答案 1 :(得分:2)

首先,我想知道您是否确定使用zh-Hans选择了正确的文化标识符,即neutral culture。也许你更适合定位特定的文化,例如zh-CN(中国在中国使用),如果这是你想要支持的市场。

其次,如果您计划专门针对此区域性的部署,则使用web.config文件设置区域性很好。通常,您需要一个相同的部署来动态适应最终用户的文化,在这种情况下,您可以以编程方式设置Thread.CurrentCulture(如果您提供本地化资源,甚至是Thread.CurrentUICulture),例如在URL方案(例如www.myapp.com将使用en-US和www.myapp.com/china将使用zh-CN)或accept-languages标头或应用程序内语言选择器。

除了Paweł引用的Unicode限制(这意味着您可能真的需要使用最新的.NET Framework / SQL Server)之外,对于简体中文,您没有任何特定的要求 - 如果您按照标准internationalization guidelines进行操作即可。顺便说一句,也许你应该考虑将你的应用本地化(翻译)为中文。

关于SQL Server,Paweł的观点似乎很清楚。也就是说,只要您使用nvarchar数据类型(Unicode)并且不对这些列运行查询或根据数据库端的这些列对它们进行排序,如果您在SQL Server 2005上遇到任何问题,我会感到惊讶。所以这真的取决于你对这些数据做了什么。