Невозможно ввести японские кандзи из windows IME в oracle 12 c базу данных sqlplus в windows 10 - PullRequest
0 голосов
/ 29 мая 2020

мой столбец «идеограмма» имеет тип данных varchar2 (1000). Я вставил один символ в столбец с Microsoft IME, 寺, Oracle sqlplus просто выдает мне знак «?». Я проверил v $ nls_parameters. nls_characterset = AL32UTF8 nls_nchar_characterset = AL16UTF16

Теперь, исходя из того, что я прочитал в других вопросах здесь, если я использую тип данных varchar2, а затем на основе запроса v $ nls_parameters, база данных использует AL32UTF8, но это "национальный набор символов", я думаю, я понятия не имею, что такое набор символов "базы данных".

Я также использовал функцию дампа с двойной таблицей. выберите дамп ('寺', 1016) из двойного; Я получил typ = 96 len = 1 characterset = AL32UTF8: 3F

Я сделал то же самое в live sql. oracle .com, который использует apex в облаке, и я получил это: typ = 96 len = 3 набора символов = AL32UTF8: e5, af, ba

почему шестнадцатеричные коды отличаются, если в нем указано, что это один и тот же набор символов?

Я понятия не имею, какую кодировку использует Microsoft IME , может в этом проблема.

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

1 Ответ

0 голосов
/ 01 июня 2020

Общее решение - изучение настройки NLS_LANG в Oracle и понимание того, что у вас могут быть разные настройки NLS_LANG на Windows, потому что режим командной строки Windows не работает так же, как Windows графический интерфейс пользователя, насколько это возможно. это касается установленных настроек.

...