2011-06-30 31 views
0

我正在从拥有其他国家用户的网站上工作。大多数情况下,我们会获得英文文本,但有时候人们会使用特殊字符(如中文符号或带有口音的E)。这些符号显示为“?”当在网站上显示时。从外国用户输入的字符显示为?

该网站有一个UTF-8字符集声明和SQL Server数据库字段是Nvarchar。我通过谷歌翻译做了测试,并将它翻译成日语“早上好”。当我将生成的汉字复制到我的网站并自己保存时,它工作正常。

什么可能导致此问题?我猜这是因为文本输入的字符集不是UTF-8。 Will accept-charset =“UTF-8”可以解决问题吗?如果不是我能做什么?即使没有办法修复现有的不良数据,我可以在将来避免这个问题吗?

+0

http://www.joelonsoftware.com/articles/Unicode.html – leonbloy

+1

为参照非英语用户称为“外国用户”,“来自其他国家”,而非ascci字符作为“特殊”则相当以英语为中心。 – leonbloy

+0

我看过那篇文章。它似乎没有帮助我。我在我的帖子中指定我使用的字符集声明和nvarchar字段都是unicode。如果您从该页面拿走了一些有用的信息,请告诉我。此外,您可能对“特殊”字符是正确的,但由于该网站在美国托管,“外国用户”是一个合适的术语和重要的区别,因为从我的电脑输入的非英文字符工作正常。 – William

回答

0

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

参见下列知识库文章dealign与存储/在MS SQL Server数据库retreieving UTF-8数据:http://support.microsoft.com/kb/232580

+0

有趣。我明天会玩,看看是否有帮助。 – William

+0

您是否碰巧知道将网站中的内容类型更改为ucs-2应该解决问题?它似乎没有修复当前的不良数据,但是它会确保新数据以正确的编码进行输入?或者我需要在表单上指定一个接受字符集? – William

+0

这可能是一种错误的方法,因为那时你假设(非常不可能)浏览器支持非标准的内容类型 – colinross