Зарегистрированный символ не вставляется как есть в таблицу - PullRequest
0 голосов
/ 08 ноября 2011

Я работаю на Oracle 10gR2.

Набор символов для БД следующий:
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_CHARACTERSET AL32UTF8.

Я получаю данные для обработки в файлах TXT.Первым шагом в обработке этих данных является создание внешних таблиц на основе этих плоских файлов.Одно из полей (и столбцов в БД) в плоском файле содержит данные String, которые содержат ® (зарегистрированный символ).Этот символ виден в текстовом файле, но когда я проверяю внешнюю таблицу, символ сохраняется как �

. Я изменил кодировку среды IDE на UTF-8, где я вижу выводquery.

Тип данных для столбца: COL NVARCHAR2 (1000)

Пожалуйста, укажите, что может быть причиной этого?

1 Ответ

0 голосов
/ 09 ноября 2011

Обычно это вызвано неправильной настройкой переменной среды NLS_LANG. Переменная NLS_LANG должна сообщать оракулу кодировку, которую вы используете для своих данных. Если NLS_LANG не установлена, оракул принимает текст ASCII (а ваш символ не ascii).

Если ваши данные в формате UTF-8, попробуйте:

NLS_LANG = .AL32UTF8

Для Windows / ISO попробуйте

NLS_LANG = .WE8ISO8859P15

Сначала вам нужно определить кодировку вашего текстового файла. Используйте шестнадцатеричный редактор, чтобы определить, является ли символ (R) UTF-8 или нет.

...