我通过在SQLDeveloper中运行脚本
在Oracle中导出数据库这是完整脚本的一部分:
WHENEVER SQLERROR EXIT SQL.SQLCODE ROLLBACK
Insert into WSLC_CAT_MOD (ID_OPER,DSC_MOD,FCH_MOD) values (14,'Contingencia - Importaci'|| CHR(243) ||'n de Archivos',to_date('15/01/15','DD/MM/RR'));
当我在WSLC_CAT_MOD表中查询时,我期待这样的事情:
14 | Contingencia - Importación de Archivos | 15/01/15
但是我得到了这个:
14 | Contingencia - Importacin de Archivos | 15/01/15
我无法获得任何带重音的角色(á,é,í,ó,ú)
答案 0 :(得分:0)
您可以使用unistr
代替chr
;传递您当前使用的十进制值的十六进制等效值 - 例如对于243,即00f3:
insert into WSLC_CAT_MOD (ID_OPER,DSC_MOD,FCH_MOD)
values (14,
'Contingencia - Importaci'|| unistr('\00f3') ||'n de Archivos',
to_date('15/01/15','DD/MM/RR'));
ID_OPER DSC_MOD FCH_MOD
---------- -------------------------------------------------- ---------
14 Contingencia - Importación de Archivos 15-JAN-15
您的数据库和客户端字符集当然很重要(正如Justin Cave指出的那样)。默认情况下,SQL Developer会从您的操作系统区域设置中选择您的语言和编码,您可以使用首选项覆盖某些内容。
您可以运行查询以查看它如何解释chr / unistr;这是OS X上的SQL Developer:
select chr(243), dump(chr(243)), unistr('\00f3'), dump(unistr('\00f3')) from dual;
C DUMP(CHR(243)) U DUMP(UNISTR('\00F3
- ---------------- - ------------------
Typ=1 Len=1: 243 ó Typ=1 Len=2: 0,243
使用许多NLS_LANG设置不会运行SQL * Plus; AL32UTF8(与我的数据库字符集相匹配)没问题,但是对于US7ASCII,WE8MSWIN1252,WE8ISO8859P1等甚至普通的UTF8,只需选择chr(243)
即可:
ORA-29275: partial multibyte character