以下情景中的三个问题:
由于这是一个prod db我不会写它。
我不知道在数据库中存储数据的客户端应用程序是否实际上正确地将其存储为Unicode,并且它根本不显示,因为它们使用Latin1作为控制台。
Q1:据我所知,SQL Server将nvarchar文本存储为Unicode,无论代码页如何,或者我完全错误,如果代码页是Latin1,那么不在该代码页中的所有内容都会转换为“?”。
Q2:是否与文字列相同?
问题3:有没有办法使用SQL Server Management Studio或Visual Studio和一些代码(不关心哪种语言:))查询数据库并告诉我字符是否确实显示日语,中文,韩语等?
我的最终目标是从数据库中提取数据并使用UTF-8将其存储在另一个数据库中,以显示日语和其他亚洲字符,就像它们在我自己的客户端webapp中一样。 我会接受Q3的答案。我可以使用多种语言编写代码,至少可以理解其他语言,但我对Unicode知之甚少。如果您想知道我的webapp将使用pyodbc和cassandra,但对于这些无关紧要的问题。
答案 0 :(得分:2)
在SSMS中插入NVARCHAR列时,您需要确保在字符串前面添加N
:
这将 NOT 工作:
INSERT INTO dbo.MyTable(NVarcharColumn) VALUES('Some Text with Special Char')
SQL Server会将VALUES(..)
中的字符串解释为VARCHAR,从而删除任何特殊字符。
您需要此:
INSERT INTO dbo.MyTable(NVarcharColumn) VALUES(N'Some Text with Special Char')
使用N'..'
前缀文本文字告诉SQL Server将其视为NVARCHAR。
这有助于您解决Q3吗?