【问题标题】:Foreign characters lose their diacritics外国字符失去了他们的变音符号
【发布时间】:2011-03-30 08:22:12
【问题描述】:

我正在尝试将调查工具中的问题国际化,但是当我插入一些翻译后的字符串时,SQL-server 似乎删除了一些(但不是全部)变音符号...

示例:(立陶宛语)

Ar jūsų darbas reikalauja, kad jūs įgytumėte naujų žinių ir įgūdžių?

变成

Ar jusu darbas reikalauja, kad jus igytumete nauju žiniu ir igudžiu?

请注意,'z' 保留了它的变音符号,而 'u'、'i' 和 'e' 失去了它们的变音符号。 保留文本的表格列是 nvarchar,但表格排序规则是 'Danish_Norwegian_CI_AS'。

有什么建议吗?

编辑 2010.08.16 11:17:

好的。我可能缩小了一些范围。我用来从数据库中提取句子的存储过程似乎是执行剥离的存储过程。它从多个来源中进行选择,所有这些来源都是 nvarchar,使用 UNION 将所有内容放入同一个查询中。那里的某个地方的字符被剥离。

...等一下...我想我可能一路上搞砸了一些东西...

【问题讨论】:

  • 你是如何插入字符的?是否有可能它的剥离字符不在您当前的非 Unicode 代码页中?上周我了解到,如果您在管理工作室中使用字符串,则需要在字符串常量前加上 N,即N'Ar jūsų',表示 unicode。
  • “似乎”是什么意思,即您在 SQL Server Mgmt Studio 中看到的显示或通过查询实际检索到的字符串?
  • “似乎”= 两者……我在 SMS 和应用程序中看到它的方式。但是,字符串前面的“N”修复了 SMS 问题。现在我只需要让我的 (ASP 3.0) 应用程序正确显示字符串
  • 我什至尝试根据返回的语言动态设置内容类型标头,但这也无济于事。

标签: sql-server encoding internationalization diacritics


【解决方案1】:

排序规则设置不会影响存储在 UTF-8 类型列中的数据。我会将您的文件的代码页和编码更改为 UTF-8,并确保您的表格将文本存储为 UTF-8,您应该已准备就绪。

【讨论】:

  • SQL SMS 现在返回正确的值,但 ASP 3.0 和 ASP.NET 3.5 都返回没有“更奇特”变音符号的字符串。我检查了我的设置,所有页面都保存在 UTF-8 中。响应标头还报告正确的内容类型...
  • 几件事要看:1) 你的上下文类型标题是什么,以及 2.) 你的页面是否以 UTF-8 编码保存?在 firefox 中,右键单击并查看 View Page Info 将为您提供此信息...
  • 内容类型:文本/html; charset=utf-8 页面根据 Visual Studio 保存为 UTF-8。仍然没有运气。现在我什至已经编码了困难的。源字符串现在显示:Ar jūsų darbas reikalauja, kad jūs įgytumėte naujų žinių ir įgūdžių?而且我知道这个是正确的,因为如果我用这个内容创建一个普通的 HTML 文件,那么句子就会正确显示......
  • 当你像在这条评论中那样显示 HTML 编码的字符时,它是如何出现的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-03
  • 2016-06-26
  • 1970-01-01
  • 2016-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多