2013-08-14 2 views
0

Недавно я создал базу данных Oracle с набором символов JA16SJIS.Японский символ в базе данных Oracle не отображается правильно

И затем я пытаюсь вставить некоторые данные, включая японские символы, используя SQL * Plus, запустив внешний файл SQL. Файл закодирован в Shift-JIS (и я могу правильно видеть японские символы в файле с помощью notepad ++).

Вставка была успешной, но когда я выбираю данные (используя SQL * Plus), японские символы отображаются неправильно (например, некоторые символы алфавита с некоторыми вопросительными знаками).

Даже когда я использую SQL Developer для просмотра данных, японские символы по-прежнему не читаются.

И я использую Window 7 Professional SP1, Oracle Database 11g R2, системный языковой стандарт, установленный в Японии.

ответ

0

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

select dump(<column>) from <table> 

Если вы знаете, что байты значения ваших символов должны быть вы можете проверить, если правильные значения в таблице.

+0

Спасибо, я смог проверить значения байтов. Если я использую SQL Developer для импорта, значения байтов верны как кодировка ShiftJIS, но если я использую SQL * Plus, значения байтов, безусловно, не являются символами ShiftJIS. Но это все еще не решает мою проблему. –

1

Во-первых, вы должны попытаться вставить текст непосредственно из представления данных SQLDeveloper. Это должно работать независимо от того, что вы можете использовать для проверки вашего импорта.

Затем, прежде чем подключаться к SQL * Plus, вы должны указать, что собираетесь отправлять, установив или изменив значение переменной среды NLS_LANG.

NSL_LANG=ENGLISH_FRANCE.JA16SJIS 

Синтаксис будет зависеть от вашей ОС. Единственная важная часть - последний JA16SJIS, что означает Shift-Jis, как вы уже знаете.

Затем вы можете подключиться к SQL * Plus и импортировать файл.

Обратите внимание, что указанная вами кодировка должна соответствовать кодировке вашего файла, но не обязательно кодированию базы, так как Oracle, при необходимости, сделает преобразование. Таким образом, у вас может быть ваша база в UTF8, и она все равно будет работать (потому что UTF8 может содержать японские символы).

+0

Благодарим вас за ответ. Но после изменения NSL_LANG на American_America.JA16SJIS и непосредственно вставки SQL * Plus японские символы по-прежнему не читаются. –

+0

Просто попробовал Windows7, он сработал. Итак ... проверьте свою кодировку. Возможно, сохраните файл как UTF8, установите NLS_LANG на AMERICAN_AMERICA.AL32UTF8 и попробуйте это. – Nicolas

Смежные вопросы