SQL Server对于一些Unicode字符返回问号。

20 浏览
0 Comments

SQL Server对于一些Unicode字符返回问号。

如果我在一个nvarchar(512)字段中存储Unicode字符,例如:\n

UPDATE MYTABLE SET UNICODEFIELD = 'TレEホSᅯTル'

\n当我查询时,得到的结果是:\nT?E?S?T?\n看起来这些“不寻常”的字符被认为不是Unicode字符,我期望的行为应该是在varchar的情况下出现“?”,而在nvarchar的情况下应该正常工作,我期望的输出是:\nTレEホSᅯTル\n而不是\nT?E?S?T?\n有人对此有什么想法吗?

0
0 Comments

问题的原因是使用了varchar而不是nvarchar。因为'TレEホSᅯTル'这样的字符无法存储在varchar中,所以会显示为'T?E?S?T?'

解决方法是使用nvarchar字面值:

UPDATE MYTABLE SET UNICODEFIELD = N'TレEホSᅯTル';

是的,就这么简单。直到现在,我总是忽视了"N",因为我习惯通过处理组件来存储Unicode数据。谢谢。

0