2011-10-21 57 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我正在使用。希望這可以幫助。