为什么Oracle“使用NCHAR_CS”无法处理扩展的ASCII字符

时间:2018-08-01 04:47:17

标签: oracle plsql ascii

我正在尝试将Unicode十进制代码转换为字符,并使用以下代码将其保存在oracle数据库中

uni_code= 131;
decoded_character_ := decoded_character_ || chr(uni_code using NCHAR_CS);

这对于Unicode十进制代码1到127可以正常工作,但是在此之后oracle数据库保存了一些随机字符。 (我不确定这些字符是随机的还是那些字符a有原因) 这是因为我做错了吗? 预先谢谢你

编辑:  经过进一步调查,我发现oracle无法连接小于127和大于127的Unicode字符。 例如

select chr(131) || chr(66) from dual;

此结果仅显示“ B”。

任何原因吗?

1 个答案:

答案 0 :(得分:0)

对我来说,您不清楚要寻找什么,但是有几种可能:

SELECT 
    UNISTR('\00E9'),
    CHR(233 USING NCHAR_CS), 
    CHR(50089),
    UTL_I18N.RAW_TO_CHAR(HEXTORAW('C3A9'), 'AL32UTF8'),
    UTL_I18N.RAW_TO_CHAR(HEXTORAW('00E9'), 'AL16UTF16'),
    UTL_I18N.RAW_TO_CHAR(TO_CHAR(130, 'fmXX'), 'US8PC437'),
    UTL_I18N.RAW_TO_CHAR(TO_CHAR(233, 'fmXX'), 'WE8MSWIN1252')
from dual;

请参阅https://codepoints.net/U+00E9https://unicode-table.com/en/00E9/以获取é的所有数字