2015-07-16 4 views
1

Я пытаюсь преобразовать национальные символы Дании в unicode. Существует ли функция plsql или параметра для функции plsql, которая может мне помочь? Я пробовал это select convert ('Æ, æ:,Ø, ø:,Å, å:','AL32UTF8') from dual;, но он не помогает. В качестве обходного пути я использовал в своем коде что-то вроде этогоPl sql конвертировать национальные символы в unicode

w_temp := replace('Æ, æ:,Ø, ø:,Å, å:','å','\u00E5'); 
w_temp := replace(w_temp,'Å','\u00C5'); 
w_temp := replace(w_temp,'æ','\u00E6'); 
w_temp := replace(w_temp,'Æ','\u00C6'); 
w_temp := replace(w_temp,'ø','\u00F8'); 
w_temp := replace(w_temp,'Ø','\u00D8'); 

но этот метод похож на работу обезьяны. Мой код не подготовлен для других национальных символов - есть ли у вас какие-либо предложения?

ответ

0

Я не уверен, что большая картина, но при условии, что вы в настоящее время есть данные в базе данных с помощью одного набора символов, который поддерживает ваши диакритические, я предпочел бы использовать совершенно другой подход:

  • экспортировать необходимые данные базы данных и существующий набор символов
  • воссоздать базу данных с набором символов юникода
  • (очень вероятно) изменить тэ определение и установить все объекты базы данных с CHAR вместо BYTE семантики
  • импорта все данные в новой базе данных

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

0

Функция CONVERT() может использоваться следующим образом: CONVERT('fioajfiohawiofh',<ORIGIN_CHARSET>,<DESTINATION_CHARSET>).

Я не знаю вашего кодовую, но вы можете попытаться найти полезную одну с помощью этого выделим:

SELECT 
    CONVERT('Æ, æ:,Ø, ø:,Å, å:',cs.value,'UTF8') AS conv 
    ,cs.value 
    ,cs.isdeprecated 
FROM 
    V$NLS_VALID_VALUES cs 
WHERE 
    cs.parameter = 'CHARACTERSET' 
; 
Смежные вопросы