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

    Create Table Test1 
    (
    id Varchar(8000) 
) 

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

Como he definido el tipo de datos de id como Varchar. Los datos se almacenan como ?????.Unicode- VARCHAR y NVARCHAR

¿Tengo que usar NVARCHAR ..? ¿Cuál es la diferencia entre VarChar y Nvarchar()? Por favor explica también sobre UNIcode.

+3

Deberá usar también el prefijo 'N' en los valores. 'N '我們 的 鋁製'' ' –

+0

Posible duplicado de [varchar o nvarchar] (http://stackoverflow.com/questions/1271313/varchar-or-nvarchar) – Kzqai

Respuesta

12

El tipo nvarchar columna le permite almacenar Unicode caracteres, que básicamente significa cualquier carácter casi desde casi cualquier idioma (incluyendo las lenguas modernas y algunas lenguas en desuso), y un buen número de símbolos también.

+0

lo he intentado pero a veces inserta el letras de idiomas divertidas y, a veces, no; el tipo de datos está establecido en nvarchar. – MJCoder

+0

@ c-sharpnewbie entonces tienes un problema de codificación en alguna parte. Haga una pregunta específica sobre eso. –

1

Sí se tienen que utilizar nvarchar o utilizar una intercalación para el conjunto de idioma que desee. Pero nvarchar es preferido. Goodgle puede decirte lo que significa esto.

3

Nvarchar soporta UNICODE. Entonces sí. necesita tener la columna como nvarchar y no varchar.

4

También se requiere el prefijo N antes de su valor. ejemplo Insertar en Valores Test1 (N '我們 的 鋁製 車架 採用 最新 的 合金 材料 所 製成, 不但 外型 輕巧, 而且 品質 優良. 為了 達到 強化 效果, 骨架 另外 經過 焊接 和 高溫 處理. 創新 的 設計 絕對 能'' '' '' '); o utilizar estadísticamente declaraciones preparadas con valores de vinculación para insertar y actualizar el conjunto de caracteres natural

0

Varchar utiliza la codificación de caracteres Windows-1252, que es para todos los fines prácticos ASCII estándar.

Como otros han señalado, nvarchar permite el almacenamiento de caracteres Unicode.

Puede obtener las traducciones de cualquier tipo de datos ASCII, como se muestra aquí:

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

A pesar de la intercalación de la base de datos. Use nvarchar para almacenar UNICODE. embeber el valor Unicode en N'[value]'

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

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

Importante es la N prefijo!

Válido para MS SQL 2014 que estoy utilizando. Espero que esto ayude.

Cuestiones relacionadas