Как получить специальные символы, используя исходный код odbc, в базу данных Oracle, используя c #? - PullRequest
0 голосов
/ 14 декабря 2018

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

Теперь с помощью ODBCConnection в моем приложении c #OdbcDataReader возвращает " кг / м? и" ? 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 ( и перезагрузка аппарата! ) решила проблему!

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

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

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

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

0 голосов
/ 14 декабря 2018

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...