2011-06-17 63 views
2

我已经在互联网上搜索了很长一段时间,发现了几个位,但总的来说它仍然无法正常工作。高棉统一码,英文和Microsoft SQL Server 2008结果在questionmarks

我正在使用Microsoft SQL Server 2008 SP2来处理需要编写高棉Unicode或英文字母的数据库。

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

有人说,我需要用高棉语的Unicode整理SQL_Latin1_General_CP850_BIN和数据类型NCHAR,NVARCHAR或NTEXT,因为它们是兼容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姓氏和first_name的结果将是这样的:

姓氏:????????? ???? first_name:??????????????????

其余的值是正确的。

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

那么我需要做些什么不同才能让高棉Unicode字符被存储在数据库中呢?

顺便说一下: 这个SQL例子在这里,像一个魅力......看不出差异...(除此之外,这个声明会使用标准整理,这对我来说也不起作用。

回答

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 
????????????? ????????????? 
ៃាំុំឌគៃុំាំឌ ៃាំុំឌគៃុំាំឌ 
+0

评论:在Firefox工作时,这些字符显示为unicode块现在在Opera中可以正常工作。我说这是我以前认为的“多么奇怪的脚本”。 – gbn 2011-06-17 19:27:02