Если есть вход или выход на странице ASP this sort of thing работает как шарм:ASP classic: что определяет кодировку символов для ADODB?
<%@ LANGUAGE="VBScript" CodePage = 65001 %>
<%
Response.CharSet = "UTF-8"
Response.CodePage = 65001
%>
Но если это страница ASP выполняет чисто VBS и я прохожу нелатинскую строку символов в качестве параметра МСА SQL sproc через Server.CreateObject("ADODB.Command")
, то он превращается в ряд символов ?
где-то между тем, когда команда Executed и MS SQL помещает ее в столбец varchar.
Однако у меня есть один экземпляр IIS, на котором одни и те же страницы ASP будут вставлять такие строки в базу данных с кодировкой UTF-8. Поскольку я не могу найти параметр IIS, который позволяет это работать, как я могу заставить значение ADODB.Command Parameter быть преобразованным в UTF-8?
Если вы передаете кодированные символы UTF-8 на SQL Server, их следует помещать в столбец 'NVARCHAR', а не' VARCHAR', что объясняет несоответствие кодировки, с которой вы сталкиваетесь. В качестве параметра вы должны использовать тип данных 'adVarWChar' или' adLongVarWChar' соответственно. – Lankymart
@ Lankymart - Я буду тестировать этот флаг типа ADO прямо сейчас. Я знаю, что столбец DB * должен быть NVARCHAR, но это устаревшая система. Любое понимание [того, как одна и та же база данных и код могли получать строки с кодировкой UTF-8 при запуске ASP с другого сервера IIS] (http://serverfault.com/q/796971/350508)? – feetwet
Интересный вопрос: тот же провайдер используется на обоих серверах? Это также полностью зависит от того, что делает страница, например, для публикации данных из формы. – Lankymart