MSSQL 2000, varchar(8000) и кириллица
Я нашел много информации про максимальные размеры типа varchar, но нигде не нашел упоминаний кириллицы.
Из спецификации mssql 2000 ясно, что тип varchar может вмещать 8000байт, что равнозначно 8000 символов таблицы ASCII. Но в ASCII нет кириллицы, тем не менее, мои эксперименты показали, что в varchar(8000) замечательно помещается и возвращается 8000 символов, включая кириллические.
Как это работает?
Ответы (1 шт):
Character data types that are either fixed-size, char, or variable-size, varchar. Starting with SQL Server 2019 (15.x), when a UTF-8 enabled collation is used, these data types store the full range of Unicode character data, and use the UTF-8 character encoding. If a non-UTF-8 collation is specified, then these data types store only a subset of characters supported by the corresponding code page of that collation.
Вероятно, utf-8 у тебя не включена и традиционно используется 1-байтовая кодировка 1251.
Лучше нормально брать nvarchar
для юникодных данных:
Character data types that are either fixed-size, nchar, or variable-size, nvarchar. In SQL Server 2012 (11.x) and later versions, when a Supplementary Character (SC) enabled collation is used, these data types store the full range of Unicode character data and use the UTF-16 character encoding. If a non-SC collation is specified, then these data types store only the subset of character data supported by the UCS-2 character encoding.