Oracle-club: FAQ - NLS_LANG


Новости | FAQ | Ссылки | Темы | Утилиты | Documentation | Семинары

Вопрос:

> стоит сервер Oracle. > Язык указан - Eglish. Если пополняю базу под SQL*plus, > все русские записи остаются русскими. Как только пишу прогу на Delphi 3, > все русские буквы заменяются знаком вопроса. > Кто знает, дело в настойках Delphi (в драйвере BDE) > или из-за того, что язык указан English? Ответ: Клиент понимает русский язык, а сервер пытается преобразовать данные в свою кодировку и не находит соответсвующих символов, поэтому подставляет знаком вопроса Наверняка в переменной NLS_LANG значение CHARACTERSET не согласоуется с CHARACTERSET БД Проверьте значение переменной NLS_LANG в REGISTRY в разделе HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE NLS_LANG подчиняется правилу <Язык>_<Территория>.<Кодировка> где <Язык> - язык сообщений <Территория> - NLS параметры - представление дат, разделителей и т.п. по умолчанию и СОРТИРОВКА ! Но можно задать отдельно NLS_SORT <Кодировка> - CHARACTERSET в котором работает клиент и желает видеть и вводить данные Возможные установки CHARACTERSET для кириллицы на клиенте PARAMETER VALUE -------------------- -------------------- LANGUAGE RUSSIAN LANGUAGE AMERICAN TERRITORY CIS - (СНГ) CHARACTERSET CL8ISO8859P5 - ISO Cirillic CHARACTERSET RU8PC866 - DOS 866 CHARACTERSET RU8BESTA - Unix KOI8r CHARACTERSET RU8PC855 - Unix Cirillic CHARACTERSET CL8MACCYRILLIC - MAC Cirillic CHARACTERSET CL8MACCYRILLICS - MAC Cirillic CHARACTERSET CL8MSWIN1251 - Win95/NT CHARACTERSET CL8KOI8R - KOI8r Возможные установки CHARACTERSET для английского языка на клиенте PARAMETER VALUE -------------------- -------------------- LANGUAGE AMERICAN TERRITORY AMERICA CHARACTERSET WE8ISO8859P1 - ISO english CHARACTERSET US7ASCII - 7bit english Возможные установки языковых параметров сервера БД для кириллицы select * from sys.V_$NLS_VALID_VALUES; PARAMETER VALUE -------------------- -------------------- LANGUAGE RUSSIAN TERRITORY CIS CHARACTERSET CL8ISO8859P5 - Unix, OS/2 CHARACTERSET RU8PC866 - Unix CHARACTERSET RU8BESTA - Unix CHARACTERSET RU8PC855 - Unix CHARACTERSET CL8MACCYRILLIC - MAC CHARACTERSET CL8MACCYRILLICS - MAC CHARACTERSET CL8MSWIN1251 - NT CHARACTERSET CL8KOI8R - Unix SORT RUSSIAN При создании БД выбирай кодировку из приведенных пример использования: CREATE DATABASE DTRA LOGFILE ('/export/home/oracle7/dbs/log1DTRA.dbf') SIZE 500K, ('/export/home/oracle7/dbs/log2DTRA.dbf') SIZE 500K, ('/export/home/oracle7/dbs/log3DTRA.dbf') SIZE 500K MAXLOGFILES 5 MAXLOGHISTORY 100 DATAFILE '/export/home/oracle7/dbs/sysDTRA.dbf' SIZE 100M MAXDATAFILES 100 MAXINSTANCES 2 NOARCHIVELOG EXCLUSIVE CHARACTER SET CL8ISO8859P5 <-- вот она кодировка /

Вопрос:

Поставил O8 фор НТ Интерпрайз (8.0.4). При установки он спросил: Рашен? Я: Да! Он и поставил рашен :(. Все бы хорошо, но видать, он не в курсе, что у рашен две кодировки: одна - в консоле, одна в - гуях. В общем в консольных утилитах работать невозможно: он все в 1252 кодировке написать пытается. Это лечиться? Если нет, можно ли сменить язык не переставляя?

Ответ:

1.set NLS_LANG=RUSSIAN_CIS.RU8PC866 plus80.exe set NLS_LANG=RUSSIAN_CIS.CL8MSWIN1251 2.Можно \HKEY_LOCAL_MACHINE\Software\ORACLE\NLS_LANG = "AMERICAN_AMERICA.CL8MSWIN1251" все сообщения и другие тексты на английском 3. Поставь (для Вин): HKEY_LOCAL_MACHINE\Software\ORACLE\ NLS_LANG = "AMERICAN_AMERICA.CL8MSWIN1251" или NLS_LANG="RUSSIAN_CIS.CL8MSWIN1251" А в Дос запускай через батничек, допустим o.bat: set nls_lang=russian_cis.ru8pc866 %1 %2 %3 %4 %5 %6 %7 %8 %9 c:\>o sqlplus scott/tiger@orcl

Вопрос :

Как сделать так чтобы SQL*Plus33 не выдавал вместо сообщений на русском языке всякую ересь ?

Ответ :

С помощью бинарного редактора из VC (Волков командер) отредактировал файл для SQL*Plus Release 3.3.4.0.0 С:\ORANT\PLUS33\spwru.msb (там кодировка Windows для SQL*Plus33) изменив первую строчку на 03 0C 23 0D 13 17 09 0E 1C 1D 20 1C 00 00 00 00 (Windows) и получил при запуске PLUS33W.EXE и меню, и все сообщения ("присоединен к", описание ошибки) в правильной кодировке. Эти символы годятся и для SQL Plus 8.0.

Тема : Русификация сообщений русского Оракла

Вопрос :

Подскажите как сделать сабж. Оракл седьмой или восьмой. При установке клиенской части - язык русский. С русскими буквами при работе с БД нет проблем. Только системные сообщения - на абракадабре. Помню есть какой-то файл на клиенте, в котором надо тупо заменить несколько байт. Подскажите какой файл и какие именно байты.

Ответ :

Практически со всеми подверсиями Developer/2000, "Language Supplement, Russian" идет с ошибками: кодировка прописанная в начале некоторых файлов *.msb не соответствует той кодировке в которой эти сообщения реально хранятся в этих файлах. Сообщения перекодируются из кодировки msb-файла в кодировку указанную в NLS_LANG и естественно, для неправильных *.msb, вместо русского текста идет "китайская грамота". Это можно исправить любым бинарным редактором, заменив первую строчку на правильную. для кодировки MSWIN1251: 03 0C 23 0D 13 17 09 0E 1C 1D 20 1C 00 00 00 00 для кодировки ISO: 03 0C 23 09 13 0F 23 23 20 24 10 20 00 00 00 00 для кодировки PC866: 12 15 23 10 03 23 21 21 00 00 00 00 00 00 00 00

Новости | FAQ | Ссылки | Темы | Утилиты | Documentation | Семинары