Oracle将utf-16十六进制转换为utf-8字符

时间:2017-08-23 18:18:45

标签: oracle encoding utf-8 plsql utf-16

我的数据库字符集是AL32UTF8和国家字符集AL16UTF16。我需要根据db字符集在表中存储一些字符的数值,然后使用数值显示特定字符​​。我在理解这种编码是如何工作的时候遇到了一些问题(unistr,chr,ascii函数之间的差异等),但最终我发现website使用了以下代码:

chr(ascii(convert(unistr(hex), AL32UTF8)))

当我使用例如:

时十六进制代码小于1000时,它可以正常工作
chr(ascii(convert(unistr('\1555'), AL32UTF8)))
chr(ascii(convert(unistr('\1556'), AL32UTF8)))

它返回相同的ascii值(ascii(convert(unistr('\hex >= 1000'), AL32UTF8)))。任何人都可以看看这个并尝试解释原因是什么?我真的以为我明白它是如何运作的,但现在我有点困惑。

0 个答案:

没有答案