2013-12-23 2 views
1

У меня есть столбец в таблице, которая VARCHAR(64), я начал видеть некоторые странные символы, которые, очевидно, не хранящие правильно, например:Какой размер использовать при переходе от VARCHAR к NVARCHAR?

ква © клюв

Я думаю, что я должен изменить тип столбца до NVARCHAR(128) - но хотелось бы получить это, утвержденное сообществом базы данных. Из того, что я понимаю VARCHAR хранит половину размера как NVARCHAR, поэтому мне нужно будет удвоить VARCHAR(64) до NVARCHAR(128) - это правильно? Я думаю, что этот вопрос в основном: Unicode вдвое больше пространства, чем ASCII?

+0

Это число персонажей в парнах. Итак, что подходит 'varchar (64)' - будет соответствовать 'nvarchar (64)' также – zerkms

+0

А хорошо знать. Как вы думаете, переезд в NVARCHAR решит проблему с проблемой «Quabec» выше? –

+0

он должен, если вы отправляете правильные данные от клиента. Я имею в виду - если он не сломан изначально и является допустимой строкой unicode – zerkms

ответ

4

NVARCHAR(64) содержит 64 символа юникода, длина которых составляет 128 байт (но вам не нужно знать или заботиться об этом).

Вы указываете размер в символах, а не в байтах.

+0

", который занимает 128 байт" --- uhm, why? Считает ли он 3 или 4 байта символом более 1 символа? – zerkms

+0

@zerkms да, я так считаю. См. Также: http://stackoverflow.com/questions/4713608/does-an-nvarchar-always-store-each-character-in-two-bytes – Blorgbeard

+0

Я ничего там не вижу, что указывает, что символ в байтах длиной 4 байта будет обрабатываться как 2 символа – zerkms

Смежные вопросы