Насколько большим должен быть мой столбец nvarchar для хранения максимум 255 символов? - PullRequest
1 голос
/ 21 апреля 2011

Мне нужно хранить 255 символов в столбце базы данных типа nvarchar.Это символы UTF-8 и могут быть многобайтовыми.Я не лучший в кодировке символов, поэтому я не уверен, имеет ли это смысл.Я хочу держать 255 символов, которые могут быть на любом языке и т. Д.

Ответы [ 2 ]

3 голосов
/ 22 апреля 2011

Вы можете найти простую для понимания справочную информацию о различных кодировках Unicode в this , главе, которую я написал в руководстве для проекта с открытым исходным кодом. Эта справочная информация поможет вам понять некоторые детали моего ответа.

Ссылка на документацию о nvarchar, предоставленную Simmo, гласит, что nvarchar хранится в формате UCS-2. Из-за этого вам нужно будет преобразовать строки UTF-8 в строки UCS-2, прежде чем сохранять их в базе данных. Вы можете найти код C ++ для этого преобразования здесь .

Тонкий, но важный момент заключается в том, что код преобразования фактически преобразуется в UTF-16, который является расширенным набором UCS-2 (UTF-16 поддерживает использование суррогатных пар, а UCS-2 - нет). Я не использую SQL Server, поэтому не знаю, будет ли он жаловаться, если вы попытаетесь вставить в него несколько суррогатных пар. (Возможно, кто-то еще здесь может подтвердить, будет ли это).

Если SQL Server запрещает суррогатные пары, тогда будет ограничение на диапазон языков, которые может поддерживать ваше приложение, но по крайней мере вы знаете, что nvarchar(255) достаточно для ваших нужд.

С другой стороны, , если SQL Server позволяет использовать суррогатные пары, тогда вы можете использовать nvarchar(510), чтобы учесть (удаленную) возможность того, что каждый отдельный символ будет состоять из суррогата пар.

1 голос
/ 21 апреля 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...