【问题标题】:Characters entered from foreign users showing as?外国用户输入的字符显示为?
【发布时间】:2011-06-30 20:00:53
【问题描述】:

我正在开发一个拥有来自其他国家/地区的用户的网站。在大多数情况下,我们得到英文文本,但有时人们使用特殊字符,如中文符号或带重音的 E。这些符号显示为“?”当显示在网站上时。

该站点具有 UTF-8 字符集声明,并且 SQL Server 数据库字段为 Nvarchar。我通过谷歌翻译做了一个测试,让它把“早上好”翻译成日语。当我将生成的汉字复制到我的网站并自己保存时,它运行良好。

什么可能导致此问题?我猜这是因为文本是在不是 UTF-8 的字符集中输入的。 accept-charset="UTF-8" 会解决问题吗?如果不是我能做什么?即使无法修复现有的不良数据,我是否可以在将来防止此问题?

【问题讨论】:

  • 将非英语用户称为“外国用户”、“来自其他国家/地区”,将非 ascci 字符称为“特殊”,这是相当以英语为中心的。
  • 我读过那篇文章。它似乎对我没有帮助。我在帖子中指定我使用的是 charset 声明和 nvarchar 字段,它们都是 unicode。如果您从该页面上拿走了有帮助的东西,请告诉我。此外,您对“特殊”字符的看法可能是正确的,但由于该网站托管在美国,因此“外国用户”是一个恰当的术语和一个重要的区别,因为从我的计算机输入的非英文字符可以正常工作。
  • 可能是显而易见的事情,但是您的数据库是否设置为使用 UTF-8 编码? @leonbloy:虽然我可能同意你的观点,但说实话,互联网及其大部分协议、标准和流程几乎都是“以英语为中心的”。外国不是一个坏词,但似乎你在使用它时注入了某种消极情绪。
  • 我的理解是在SQL server中“nvarchar”=unicode。这不正确吗?

标签: html character-encoding cjk


【解决方案1】:

SQL Server 7.0 和 SQL Server 2000 使用 不同的 Unicode 编码 (UCS-2) 并且不将 UTF-8 识别为有效 字符数据。

请参阅以下知识库文章,了解如何在 MS SQL Server 数据库中存储/检索 utf-8 数据:http://support.microsoft.com/kb/232580

【讨论】:

  • 有趣。明天我会玩它,看看是否有帮助。
  • 您是否知道将我在网站中的 Content-Type 更改为 ucs-2 是否可以解决问题?它似乎无法修复当前的错误数据,但它会确保新数据以正确的编码方式输入吗?还是我需要在我的表单上指定一个接受字符集?
  • 这可能是一个有点错误的方法,因为你假设(极不可能)浏览器支持非标准内容类型
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-08
  • 1970-01-01
  • 2021-06-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多