我的Oracle 11g配置了AL32UTF8
AuditReader
为什么tilde-N在第二个记录中显示为tilde-N,但是在Acute-I和K中显示 在第一张唱片中不显示Acute-I和K?
其他信息:
Accent-I的十六进制代码是 CD
当我从转储中获取HEX代码并使用NLS_CHARACTERSET AL32UTF8
转换它时,字符会显示重音。
UNISTR()
答案 0 :(得分:1)
这可能是您使用任何客户端显示结果而不是数据库的问题。你在用什么?
您可以使用DUMP
功能检查数据库结果是否正确。如果表中的值具有数据库字符集的正确字节序列,那么您就是好的。
修改强>
好的,我很确定您的数据不好。你在谈论 LATIN CAPITAL LETTER I WITH ACUTE,即Unicode 代码点 U + 00CD。这与字节0xCD不同。您正在使用数据库字符集AL32UTF8,它使用UTF-8编码。 U + 00CD字符的正确UTF-8编码是双字节序列0xC38D。
你所拥有的是UTF-8字节序列0xCD4B,我很确定无效。
Oracle UNISTR
函数采用UCS-2编码的代码点,与UTF-16大致相同,而不是UTF-8。