2011-10-21 56 views
7
-- Creating Table 

    Create Table Test1 
    (
    id Varchar(8000) 
) 

-- Inserting a record 
Insert into Test1 Values ('我們的鋁製車架採用最新的合金材料所製成,不但外型輕巧、而且品質優良。為了達到強化效果,骨架另外經過焊接和高溫處理。創新的設計絕對能充分提升踏乘舒適感和單車性能。'); 

因为我已经将id的数据类型定义为Varchar。数据存储为?????。Unicode-VARCHAR和NVARCHAR

我必须使用NVARCHAR ..吗? VarChar和Nvarchar()之间有什么区别?请解释关于UNIcode。

+3

您也需要在值上使用'N'前缀。 'N'我们的铝制车架' –

+0

[varchar或nvarchar]可能的重复(http://stackoverflow.com/questions/1271313/varchar-or-nvarchar) – Kzqai

回答

12

列类型nvarchar允许您存储Unicode字符,它基本上意味着几乎任何语言(包括现代语言和某些过时的语言)以及大量符号中的几乎任何字符。

+0

我试过这个,但有时它插入有趣的语言字母,有时它不 - 数据类型设置为nvarchar。 – MJCoder

+0

@ c-sharpnewbie那么你在某处有编码问题。询问一个具体的问题。 –

1

是的,您必须使用nvarchar或使用您需要的语言集的排序规则。但nvarchar是首选。 Goodgle可以告诉你这是什么意思。

3

Nvarchar支持UNICODE。是的。您需要将该列作为nvarchar而不是varchar。

4

还需要在您的值之前加前缀N.例如Insert into Test1 Values(N'我们的铝制车架采用最新的合金材料所制成,不但外型轻巧,而且品质优良。为了达到强化效果,骨架另外经过焊接和高温处理。创新的设计绝对能充分提升踏乘舒适感和单车性能');或以编程方式使用带有绑定值的预制语句来插入和更新自然字符集

0

Varchar使用Windows-1252字符编码,这是用于所有实际目的的标准ASCII。

正如其他人所指出的,nvarchar允许存储unicode字符。

你可以从任何数据类型的ASCII翻译,如下所示:

IF OBJECT_ID('TEST1') IS NOT NULL 
    DROP TABLE TEST1 
GO 
CREATE TABLE TEST1(VARCHARTEST VARCHAR(8000), NVARCHARTEST NVARCHAR(4000)) 

-- Inserting a record 
INSERT INTO TEST1 VALUES ('ABC','DEF') 
SELECT 
    VARCHARTEST 
,NVARCHARTEST 
,ASCII(SUBSTRING(VARCHARTEST,1,1)) 
,ASCII(SUBSTRING(VARCHARTEST,2,1)) 
,ASCII(SUBSTRING(VARCHARTEST,3,1)) 
,ASCII(SUBSTRING(NVARCHARTEST,1,1)) 
,ASCII(SUBSTRING(NVARCHARTEST,2,1)) 
,ASCII(SUBSTRING(NVARCHARTEST,3,1)) 
FROM 
    TEST1 
DROP TABLE TEST1 
0

尽管你的数据库的排序规则。使用nvarchar来存储UNICODE。 在N'[value]'

INSERT INTO ... VALUES 
('Azerbaijani (Cyrillic)', N'Aзәрбајҹан (кирил әлифбасы)', 'az-cyrl') 

In DB: 59 Azerbaijani (Cyrillic) Aзәрбајҹан (кирил әлифбасы) az-cyrl 

重要Embbed您的Unicode值是ñ前缀!

适用于MS SQL 2014我正在使用。希望这可以帮助。