Oracle Connection и nls_lang - PullRequest
       16

Oracle Connection и nls_lang

0 голосов
/ 19 мая 2009

У меня установлена ​​устаревшая база данных с NLS_LANG, установленной в IW8ISO8859P8. Это я не могу изменить.

У меня есть другое приложение, которое не работает с Unicode, которое работает с теми же данными, с которыми работает мое приложение. В некоторых полях и в некоторых случаях пользователь вставляет как часть строки символ 161, который представляет симуляцию валюты NIS. Когда я пытаюсь прочитать эти данные из .Net с помощью oledb, все хорошо, но когда я пытаюсь сделать это с помощью клиента oracle, я получаю вместо этого данные мусора. также, когда я вставляю в .Net sim-файл NIS, он сохраняется как мусор.

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

Я работаю над этим уже несколько недель, любая помощь будет оценена. Tnx Ноам

Ответы [ 3 ]

0 голосов
/ 19 мая 2009

вы проверяли настройку nls_lang на клиенте? Любые изменения в настройке nls могут быть перезаписаны настройками на клиенте (реестр и окружение). Может быть, это причина вашей проблемы. Убедитесь, что у вас нет других настроек nls на клиенте, и что ни одна из ваших функций явно не изменяет его. Вы можете запустить триггер после входа в систему, чтобы изменить формат сеанса. это гарантирует, что настройки сервера повлияют на всех клиентов. Кроме того, убедитесь, что nls_territory установлен. он должен быть установлен как часть nls_lang, но на всякий случай вы имели в виду nls_language. Я полагаю, что это влияет на символ валюты.

0 голосов
/ 23 февраля 2010

В конце дня я решил это с помощью вторичной колонки nvarchar. и запускает перевод между ними.

Я написал функции в plsql, которые выполняют преобразование байтов в и из Юникода, используя пользовательскую кодировку, реализованную многими операторами if.

И для каждого столбца с проблемными данными я добавил второй столбец с хранилищем nvarchar и триггерами, которые используют эту функцию для перевода проблемных данных.

Таким образом, старые приложения используют и обновляют столбцы varchar, а триггеры переводят их в столбцы Unicode. и код .Net использует столбцы Unicode, и триггеры снова переводят информацию в проблемную кодировку, используемую в устаревшем приложении.

Если вам нужна дополнительная информация, пожалуйста, свяжитесь со мной для получения дополнительной информации

0 голосов
/ 19 мая 2009

Вы смотрели на Oracle NLS_LANG FAQ ?

...