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

    Create Table Test1 
    (
    id Varchar(8000) 
) 

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

Come ho definito il tipo di dati di id come Varchar. I dati sono memorizzati come ?????.Unicode- VARCHAR e NVARCHAR

Devo utilizzare NVARCHAR ..? Qual è la differenza tra VarChar e Nvarchar(). Si prega di spiegare anche su UNIcode.

+3

Sarà necessario utilizzare anche il prefisso 'N' sui valori. 'N '我們 的 鋁製 車架'' –

+0

Possibile duplicato di [varchar o nvarchar] (http://stackoverflow.com/questions/1271313/varchar-or-nvarchar) – Kzqai

risposta

12

Il tipo di colonna nvarchar consente di memorizzare i caratteri Unicode, che in pratica significa quasi tutti i caratteri di quasi tutte le lingue (comprese le lingue moderne e alcune lingue obsolete) e anche un buon numero di simboli.

+0

ho provato questo, ma a volte inserisce il lettere di caratteri divertenti ea volte no - il tipo di dati è impostato su nvarchar. – MJCoder

+0

@ c-sharpnewbie, quindi hai un problema di codifica da qualche parte. Fai una domanda specifica a riguardo. –

1

Sì, è necessario utilizzare nvarchar o utilizzare un confronto per il set di lingue desiderato. Ma nvarchar è preferito. Goodgle può dirti cosa significa questa roba.

3

Nvarchar supporta UNICODE. Quindi sì. è necessario avere la colonna come nvarchar e non varchar.

4

inoltre è necessario prefisso N prima del valore. esempio Inserisci nei valori Test1 (N '我們 的 鋁製 車架 採用 的 的 合金 材料 所 製成, 不但 外型 輕巧, 而且 品質 優良. 為了 達到 強化 效果, 骨架 另外 經過 焊接 和 和 處理. 創新 的 設計 絕對 能充分 提升 踏 乘 舒適 感 和 單車 性能. '); o utilizzare in modo programmatico la preparazione con valori di bind per l'inserimento e l'aggiornamento di caratteri naturali

0

Varchar utilizza la codifica di caratteri Windows-1252, che è per tutti gli scopi pratici ASCII standard.

Come altri hanno notato, nvarchar consente la memorizzazione di caratteri unicode.

È possibile ottenere le traduzioni ASCII da entrambi i tipi di dati, come illustrato di seguito:

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

Nonostante le regole di confronto del database. Utilizzare nvarchar per memorizzare UNICODE. Embbed tuo valore Unicode in N'[value]'

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

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

Importante è il prefisso N!

Valido per MS SQL 2014 che sto utilizzando. Spero che questo ti aiuti.

Problemi correlati