Oracle11g 为什么一个AL32UTF8字符不显示I-Acute,而另一个显示tilde-N?
我的Oracle 11g配置了AL32UTF8Oracle11g 为什么一个AL32UTF8字符不显示I-Acute,而另一个显示tilde-N?,oracle11g,character-encoding,Oracle11g,Character Encoding,我的Oracle 11g配置了AL32UTF8 NLS\U字符集AL32UTF8 为什么第二条记录中的tilde-N显示为tilde-N,而Acute-I和K显示为tilde-N 在第一条记录中不显示ACURE-I和K 其他信息: 重音-I的十六进制代码为CD 当我从转储中获取十六进制代码并使用UNISTR()对其进行转换时,字符显示时带有重音 select unistr('\0052\0045\0059\004B\004A\0041\0056\00CD\004B')
NLS\U字符集AL32UTF8
为什么第二条记录中的tilde-N显示为tilde-N,而Acute-I和K显示为tilde-N
在第一条记录中不显示ACURE-I和K
其他信息:
重音-I的十六进制代码为CD
当我从转储中获取十六进制代码并使用UNISTR()
对其进行转换时,字符显示时带有重音
select
unistr('\0052\0045\0059\004B\004A\0041\0056\00CD\004B')
as hex_to_unicode
from dual;
这可能是您用来显示结果的客户端(而不是数据库)的问题。你在用什么 您可以使用
DUMP
功能检查数据库结果是否正确。如果表中的值具有数据库字符集的正确字节序列,那么就可以了
编辑:
好的,我很确定你的数据是错误的。你在说什么
,即Unicode代码点U+00CD。这与字节0xCD不同。您使用的是数据库字符集AL32UTF8,它使用UTF-8编码。U+00CD字符的正确UTF-8编码为双字节序列0xC38D
您拥有的是UTF-8字节序列0xCD4B,我很确定它是无效的
OracleUNISTR
函数采用UCS-2编码中的代码点,这与UTF-16大致相同,而不是UTF-8
此处演示:您的客户端工具是否将字体设置为显示ACURE-I和K?eaolson:谢谢你的回复。当我通过UNISTR运行十六进制字符时,客户端TOAD呈现了这个字符。