高棉语Unicode,英语和Microsoft SQL Server 2008会产生问号

时间:2011-06-17 08:58:57

标签: sql-server-2008 unicode

我已经在互联网上搜索了很长一段时间并发现了几个位但总的来说还是没有用。

我正在使用Microsoft SQL Server 2008 SP2作为数据库,我需要在其中编写高棉语或英文字母。

根据此博客:http://sochinda.wordpress.com/2009/10/03/khmer-unicode-on-sql-server/

据说我需要对高棉Unicode和数据类型NCHAR,NVARCHAR或NTEXT使用排序规则SQL_Latin1_General_CP850_BIN,因为它们是unicode兼容的。

当我使用以下SQL语句时:

use pis

INSERT INTO dbo.pmd (patient_code, last_name, first_name, age, sex, province, district, commune, village) VALUES ('0600-075D4-4AC8', 'ៃាំុំឌគៃុំាំឌ', 'ៃគុំដសហគៃុំះកឆញហេឆ', '2008', 'm', '060000', '060400', '060403', '06040304')

表dbo.pmd中last_name和first_name的结果如下所示:

last_name:????????????? first_name:??????????????????

剩下的值都没问题。

右键单击我的数据库,单击属性,向我显示排序规则设置为SQL_Latin1_General_CP850_BIN。 右键单击表dbo.pmd,单击Design,显示last_name和first_name被定义为NVARCHAR(50)。

那么我需要做些什么才能使高棉语字符存储在数据库中?

顺便说一下: 这里的SQL示例就像一个魅力......看不出差别......(除此之外,这个陈述将使用对我来说也不起作用的标准排序规则。

1 个答案:

答案 0 :(得分:2)

你需要在字符串上使用N来使它们成为unicode

INSERT INTO dbo.pmd (patient_code, last_name, first_name, age, sex,province, district, commune, village)
VALUES ('0600-075D4-4AC8', N'ៃាំុំឌគៃុំាំឌ', N'ៃគុំដសហគៃុំះកឆញហេឆ', '2008', 'm', '060000', '060400', '060403', '06040304')

一个简单的例子:

DECLARE @khmertest TABLE (
            SomeText nvarchar(50) COLLATE SQL_Latin1_General_CP850_BIN,
            SomeText2 nvarchar(50)
      )

INSERT @khmertest VALUES ('ៃាំុំឌគៃុំាំឌ', 'ៃាំុំឌគៃុំាំឌ')
INSERT @khmertest VALUES (N'ៃាំុំឌគៃុំាំឌ', N'ៃាំុំឌគៃុំាំឌ')

SELECT * FROM @khmertest

给出

SomeText    SomeText2
?????????????   ?????????????
ៃាំុំឌគៃុំាំឌ   ៃាំុំឌគៃុំាំឌ