Как получить специальные символы, используя исходный код odbc, в базу данных Oracle, используя c #?

2

У меня есть источник данных ODBC для базы данных Oracle. В таблице, из которой я выбираю данные, есть столбцы varchar2 содержащие, например, " кг/м³ " или " ° C ".

Теперь, используя ODBCConnection в моем приложении на С#, OdbcDataReader возвращает " kg/m" и " ? C ".

Проверка параметров NLS с помощью:

SELECT * 
FROM V$NLS_PARAMETERS 
WHERE PARAMETER IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');

возвращает AL32UTF8 для NLS_CHARACTERSET и AL16UTF16 для NLS_NCHAR_CHARACTERSET.

Если я изменяю тип столбца на NVARCHAR, OdbcDataReader возвращает правильное значение. Но изменение столбцов таблицы не вариант, потому что база данных также используется другими приложениями.

Есть ли способ получить правильное значение, установив какой-либо параметр для объектов подключения, команды или считывателя?

Спасибо, Cew3

Редактировать: Установка системной среды NLS_LANG в GERMAN_GERMANY.AL32UTF8 (и перезагрузка машины!) Решила проблему!

Спасибо всем за подсказки/комментарии!

  • 0
    Какой драйвер ODBC вы используете?
  • 1
    Это может быть локальная переменная среды NLS_LANG на вашем клиентском компьютере - представление V $ NLS_PARAMETERS показывает кодировку базы данных, которая может отличаться от кодировки вашего клиента. stackoverflow.com/questions/4955363/...
Показать ещё 4 комментария
Теги:
odbc
unicode-string

3 ответа

0

Решение было:

Установка системной среды NLS_LANG в GERMAN_GERMANY.AL32UTF8 и перезагрузка машины!

0

Скорее всего, вы используете устаревший и устаревший Microsoft ODBC for Oracle от Microsoft. Он не поддерживает UTF-8.

Драйвер ODBC для Oracle не поддерживает ни один из новых типов данных Oracle8 - типы данных Unicode, BLOB, CLOB и т.д., А также не поддерживает новую реляционную объектную модель Oracle.

Используйте драйвер ODBC от Oracle (например, ODAC Runtime Downloads), этот должен работать.

0

Я использую драйвер Oracle ODBC для Windows (12.2.0.1).

Я попытался установить локальную среду Windows NLS_LANG в AL32UTF8, но безуспешно.

Редактировать: Установка NLS_LANG в GERMAN_GERMANY.AL32UTF8 (и перезагрузка машины!) Решила проблему! Спасибо всем за подсказки!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню