2015-03-06 1 views
1

Ниже приведен пример моего кода.Почему я могу вставить символы не-ascii в столбец VARCHAR и правильно вернуть его?

DECLARE @a TABLE (a VARCHAR(20)); 
INSERT @a 
     (a) 
VALUES ('中'); 

SELECT * 
FROM @a; 

Я использую SQL Server Management Studio для его запуска. Мой вопрос в том, почему я могу вставить символы не-ascii в столбец VARCHAR и правильно вернуть его? Насколько я понимаю, тип VARCHAR предназначен только для символов ascii, а NVARCHAR - для символов Unicode. Кто-нибудь может помочь объяснить это, пожалуйста? Я нахожусь в Windows 7 с выпуском разработчика SQL Server 2014.

ответ

0

Здесь вы можете найти ASCII и Extended ASCII символов.

ASCII

enter image description here

Расширенная ASCII

enter image description here

Я не верю '中' является ASCII символов.

www.asciitable.com

+1

«Extended ASCII» не ASCII либо. –

2

Кодовая страница используется для хранения данных VarChar варьируется в зависимости от DB сортировки.

https://msdn.microsoft.com/en-us/library/ms189617.aspx

Varchar 8 бит, так что вы можете иметь различные параметры сортировки, или вы, возможно, получили повезло, где ваш персонаж падает на код установлен