Я использую следующий код, чтобы получить сообщение из базы данных, а затем записать его на html-страницу:
Dim strDSN, cnn, cmd
strDSN = "Driver = {SQL Server};" & "Server=(local)\sql2k5;" & ...
set cnn = Server.CreateObject("ADODB.Connection")
cnn.ConnectionString = strDSN
cnn.CursorLocation = adUseClient
cnn.Open
set cmd = Server.CreateObject("ADODB.Command")
set cmd.ActiveConnection = cnn
cmd.CommandText = "select Message from tblRecipients where ID = 72"
cmd.CommandType = adCmdText
set getRecordset = Server.CreateObject("ADODB.Recordset")
getRecordset.Open cmd, , adOpenKeyset, adLockReadOnly
Response.write getRecordset("Message")
однако все, что я получаю, это "???????". Я проверил, что это не браузер, это то, что на самом деле написано.
чтобы вставить сообщение, которое я запустил update tblRecipients установить Message = N'Добре 'где ID = 72 в диспетчере SQL-сервера.
Любая помощь о том, как заставить его правильно отображаться?





Вы можете попробовать использовать Собственный клиент SQL, чтобы увидеть, исправит ли это его для вас, это немного дикая догадка, но я знаю, что он решил другие проблемы с типами данных и классическим ASP.
Ваш db, вероятно, хранит данные в чем-то другом, кроме utf-8 (может быть, utf-16 или ucs 2?), А ваша страница asp (по умолчанию) ожидает utf-8. Вот почему ваши данные кажутся правильными из студии управления SQL, но не со страницы ASP. Данные utf-8 в БД выглядят как забавные символы при просмотре из SQL Management Studio.
Я все еще пытаюсь понять, как хранить мои данные в utf-16 и разрешить asp-страницам отображать их без явного преобразования в utf-8 в каждом операторе sql. Изменение asp charset = "utf-16", похоже, не помогло.
Добро пожаловать в интернационализацию. Я боролся весь день.
Рон прав. Сортировка вашей базы данных, вероятно, установлена на Latin-1 или что-то в этом роде, что, я считаю, эквивалентно ISO-8859-1.
Однако вы храните данные, которые необходимо изменить. Например, если вы вставляете специальные символы, такие как двойные кавычки, вам нужно будет преобразовать их перед сохранением в базе данных. И наоборот, если вы не конвертируете входящие данные, вам придется конвертировать их с помощью стороннего инструмента при отображении данных прямо из базы данных. Я наткнулся на COM-объект от ChilKat, который, как мне кажется, делает это. Я не могу найти ничего, встроенного в Classic ASP, что дало бы возможность конвертировать из ISO-8859-1 (или чего-то еще в этом отношении) в UTF-8 или наоборот.
Кроме того, в вашем HTML вам нужно будет установить кодировку, равную типу кодировки, который вы хотите использовать.
Удачи.
Решение: Чувак, это было странно. Проблема заключалась в том, что фактический файл ASP был закодирован в ANSI. По-видимому, именно эта кодировка используется, когда файл передается клиенту (это имеет смысл, если вы помните, что файл asp - это просто файл, передаваемый клиенту, который немного изменен механизмом asp). Решением было изменить кодировку файла ASP на utf-8. Таким образом, когда символы utf-8 записываются в файл на пути к клиенту, они соответствуют кодировке остальной части файла и правильно читаются браузером.
Надеюсь, это поможет следующему человеку.
Ура,
Энди.