如何检查 Oracle 数据库中的商标(™) 字符设置是否正确?
我希望它使用 UTF-8 编码存储。
我在 Salesforce.com 字段中存储了一个值,从 GUI 来看,该值如下所示(注意商标字符):
Chuck Norris's Roundhouse Kick™
我正在使用 Informatica 将其复制到 Oracle 数据库。我的数据库设置为使用 AL32UTF8 编码。
它如何在 SQL Developer 中显示
当我使用 SQL Developer 查询表时,商标符号显示为一个矩形(黑色边框,白色填充)。
它如何在 HTML 中显示
当我使用 UTF-8 编码将其从 SQL Developer 导出到 HTML 文档,并在 Chrome 中打开它时,商标符号根本不出现。当我在 IE 中打开它时,它再次显示为矩形。在 Firefox 中,它是一个带有00
在上半部分和99
在下半部分。所有三个浏览器都使用 UTF-8 解释 HTML 文档。
它如何在文本编辑器中显示
在记事本和记事本++中打开相同的HTML文档,商标符号显示为矩形。如果我使用 Notepad++ 的 Hex Viewer 插件,我会看到字节编码是C2 99
。这似乎是UTF-8 中商标符号的正确编码 http://www.fileformat.info/info/unicode/char/0099/index.htm.
当我在 MS Write 中打开文档时,商标字符如下所示:™
.
当我以编程方式获取值时
使用Python,当我从数据库获取值时,商标字符被替换为“\xbf”——倒问号 http://www.fileformat.info/info/unicode/char/00bf/index.htm, but that据我所知,字符甚至没有正确编码,因为它至少缺少一个前导字节(取决于特定的编码)
>>> import cx_Oracle
>>> con = cx_Oracle.connect('username', 'password', 'db')
>>> cur = con.cursor()
>>> cur.execute('select * from trademark')
<__builtin__.OracleCursor on <cx_Oracle.Connection to username@db>>
>>> records = cur.fetchall()
>>> records[0][0]
"Chuck Norris's Roundhouse Kick\xbf"
理想情况下,我希望能够使用上述所有方法验证存储在 Oracle 数据库中的数据。我会满足于有人只是验证我在十六进制查看器中看到的内容足以进行“测试”;)