Pl sql将国家字符转换为unicode

时间:2015-07-16 05:41:05

标签: unicode plsql

我尝试将丹麦国家角色转换为unicode。在plsql或plsql函数中有函数可以帮助我吗?我试试这个select convert ('Æ, æ:,Ø, ø:,Å, å:','AL32UTF8') from dual;,但它没有帮助。作为一种解决方法,我在我的代码中使用了类似的东西

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');

但这种方法就像猴子一样。我的代码没有为任何其他国家字符做好准备 - 你有什么建议吗?

2 个答案:

答案 0 :(得分:0)

我不确定大局是什么,但假设您目前将数据存储在一个支持您的变音符号的单个字符集的数据库中,我宁愿使用完全不同的方法:

  • 导出数据库和现有字符集所需的数据
  • 使用unicode字符集重新创建数据库
  • (很可能)更改te定义并使用CHAR而不是BYTE语义安装所有数据库对象
  • 将所有数据导入新数据库

显然有很多细节需要解决,但让Oracle在导入过程中正确转换字符集似乎只是合理的方式。

答案 1 :(得分:0)

CONVERT()函数可以使用如下CONVERT('fioajfiohawiofh',<ORIGIN_CHARSET>,<DESTINATION_CHARSET>)

我不知道你的字符集,但你可以尝试使用这个SELECT找到有用的字符:

SELECT
  CONVERT('Æ, æ:,Ø, ø:,Å, å:',cs.value,'UTF8') AS conv
  ,cs.value
  ,cs.isdeprecated
FROM
  V$NLS_VALID_VALUES cs
WHERE
  cs.parameter = 'CHARACTERSET'
;