У меня есть классическая страница ASP, которая получает POSTed. Данные получают POSTED как UTF-8 (я вижу это в Fiddler). Затем я открываю соединение ADODB с базой данных и сохраняю данные в поле VARCHAR. Если данные могут быть представлены 8859-1 (например, iñtërnâtiônàlizætiøn), они сохраняются правильно в поле varchar. Если я попробую строки, которые не могут быть сопоставлены с 8859 (например, Здравствуйте!), Я получаю ????????????!. Все это имеет смысл, поскольку поле varchar не может содержать юникод. Я также понимаю, что использование поля nvarchar должно позволить мне хранить строки utf-8.Классический ASP, SQL Server и кодировки символов
Мой вопрос в том, что. Какие параметры в SQL Server или в объекте ADODB управляют тем, как строки преобразуются из UTF-8 в 8859-1? VBScript (ASP) отправляет строки в ADODB.Connection.Execute как UTF-8 (или, как я думаю, это действительно делает - UTF-16), и сама база данных обрабатывает преобразование? Это контролируется путем сопоставления базы данных (SQL_Latin1_General_CP1_CI_AS в этом случае)?
FWIW, IIRC, ASP использует UTF-16 внутренне для всего. – EricLaw