SQL Server 数据库字段处理韩文和中文字符

29

在SQL Server中,是否有可能拥有一个可以存储中文、韩文和欧洲字符的字段?我的中文字符只会变成?????

数据类型也是NVARCHAR


您需要同时存储英文吗? - Neil Knight
嗨,ardman - 是的,英语也可以。 - Alessandro
2个回答

67

NVARCHAR 是适合此用途的类型 - 它使用2字节的Unicode存储所有内容。

需要注意的是,在SQL Server Management Studio中使用 NVARCHAR 字段时,必须绝对使用 N'....' 前缀!

如果使用以下代码:

INSERT INTO dbo.YourTable(NVarcharColumn)
    VALUES('Some Chinese text here')

那么 SSMS 将会临时转换你指定的字符串文本为 VARCHAR(非 Unicode!),因此你将失去任何 Unicode 编码的字符。

然而,如果你使用:

INSERT INTO dbo.YourTable(NVarcharColumn)
    VALUES(N'Some Chinese text here')

(注意字符串字面量前的N前缀!) 如果有N前缀,SSMS将始终将所有内容视为Unicode,您的中文或韩文(或其他)特殊字符应该会被保留。


谢谢您,但似乎它并没有起作用。我有一种感觉是我在某个地方缺少了一些设置? - Alessandro
@Alessandro:你是想在SSMS中处理数据还是从客户端应用程序中处理?另外:你的服务器和数据库使用哪种排序规则? - marc_s
通过基于ColdFusion的Web应用程序...尽管我直接在SSMS中尝试了该脚本服务器排序规则:SQL_Latin1_General_CP1_CI_AS 数据库排序规则:SQL_Latin1_General_CP1_CI_AS - Alessandro
1
问题解决了! :D - jk1990
1
我把列类型设置成了varchar,但是它显示为?字符。当我把它改成nvarchar时,就可以成功存储中文、日文和韩文字符了。我确保我的数据库排序规则已经设置为SQL_Latin1_General_CP1_CI_AS。 - mknopf

0
需要将列的数据类型更改为Nvarchar
insert into [dbo].[tablename] (columnname)values(N'日本')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接