Как отобразить арабские символы из базы данных Oracle в asp classic

Мое классическое приложение ASP подключается к Oracle 11g через ADODB следующим образом:

Set Connection1 = Server.CreateObject("ADODB.Connection") 
Set Recordset = Server.CreateObject("ADODB.Recordset")
Connection1.Open = "Data Source=PIPCP;User Id=PIP104;Password=xxxxxxxxxxxx"
SQL = "Select CUST_NAME FROM PIP_CUST_HEAD;"
Recordset.Open SQL, Connection1

и отображая значение следующим образом:

Response.Write Recordset("CUST_NAME")

Значение всегда отображается как:

???? ??????

Я пробовал следующее, но безуспешно:

Мета-тег:

<meta content = "html/text; charset=utf-8" http-equiv = "Content-Type" />

CodePage:

Response.CodePage = 65001

Кодировка:

Response.Charset = "UTF-8"

Комбинация языка и кодовой страницы

<%@LANGUAGE = "VBSCRIPT" CODEPAGE = "65001"%>

Запросил данные в TOAD и без проблем получил арабский текст, так что сортировка базы данных хорошая. Он может хранить арабские значения и отображает арабские значения.

Я попытался вручную ввести арабский текст на странице ASP, и он отображается без каких-либо проблем.

Также пробовал без кодировки, кодовой страницы и метатега.

Данные извлекаются через ODBC. Я пробовал получить данные с нескольких серверов с разной конфигурацией, но они все равно не отображаются должным образом.

Поверьте, я несколько дней находил решение этой проблемы и искал везде, пробовал все решения.

Как я могу решить эту проблему? Любые предложения или решения будут приняты во внимание. Спасибо.

Похоже, вы сделали все, что вам нужно, на стороне Classic ASP, Response.CodePage = 65001 обычно является ключом к тому, чтобы все работало, поэтому я подозреваю, что проблема кроется на стороне Oracle? Я ничего не знаю конкретно об Oracle, но возможно ли, что ваши данные хранятся с использованием кодировки символов, отличной от UTF-8. В качестве альтернативы проблема может быть связана с коннектором - я знаю, что есть старая версия коннектора MySQL ODBC, которую все еще используют некоторые веб-хосты, которая не поддерживает UTF-8.

John 19.03.2018 19:19

Попробуйте добавить charset=AL32UTF8 или charset=UTF8 в строку подключения. Другой вариант - использовать поставщика OLEDB вместо поставщика ODBC, который должен изначально обрабатывать кодировки docs.oracle.com/cd/E11882_01/win.112/e17726.pdf (стр. 39)

ThatGuyInIT 20.03.2018 01:19

@SeanRingel, как указал Джон, это полностью зависит от того, используют ли они UTF-8 в Oracle, я думаю, что, вероятно, нет.

user692942 20.03.2018 01:42

Переход с ODBC на OLEDB помог !!! Возникла проблема, так как я получал ошибку недопустимого символа, но это было связано с использованием точки с запятой в конце запроса, после удаления он работает отлично. Спасибо @SeanRingel за указание на провайдера.

user3625561 20.03.2018 05:59

Хотя у вас есть решение, но все же здесь другое решение - какой тип кодировки файла. Я столкнулся с такой же ошибкой, когда у меня был файл с кодировкой ANSI. Я просто изменил его на UTF-8 и разместил метатег chartset = "UTF-8".

Kiran 22.03.2018 14:56
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
742
0

Другие вопросы по теме