Unicode 我如何检查商标是否正确(™) 我的Oracle数据库中的字符设置是否正确? 我如何检查商标是否正确™ 我的Oracle数据库中的字符设置是否正确?

Unicode 我如何检查商标是否正确(™) 我的Oracle数据库中的字符设置是否正确? 我如何检查商标是否正确™ 我的Oracle数据库中的字符设置是否正确?,unicode,utf-8,character-encoding,Unicode,Utf 8,Character Encoding,我希望它使用UTF-8编码存储 我在Salesforce.com字段中存储了一个值,该值在GUI中显示如下注意商标字符: Chuck Norris's Roundhouse Kick™ 我正在使用Informatica将其复制到Oracle数据库。我的数据库设置为使用AL32UTF8编码 它在SQL Developer中的显示方式 当我使用SQLDeveloper查询我的表时,商标符号显示为矩形黑色边框,白色填充 它在HTML中的显示方式 当我使用UTF-8编码将它从SQL Developer

我希望它使用UTF-8编码存储

我在Salesforce.com字段中存储了一个值,该值在GUI中显示如下注意商标字符:

Chuck Norris's Roundhouse Kick™
我正在使用Informatica将其复制到Oracle数据库。我的数据库设置为使用AL32UTF8编码

它在SQL Developer中的显示方式 当我使用SQLDeveloper查询我的表时,商标符号显示为矩形黑色边框,白色填充

它在HTML中的显示方式 当我使用UTF-8编码将它从SQL Developer导出到HTML文档中,并在Chrome中打开它时,商标符号根本不会出现。当我在IE中打开它时,它再次显示为矩形。在Firefox中,它是一个矩形,上半部分为00,下半部分为99。所有三个浏览器都使用UTF解释HTML文档-八,

它在文本编辑器中的显示方式 在记事本和记事本++中打开相同的HTML文档,商标符号显示为矩形。如果我使用记事本++的十六进制查看器插件,我会看到字节编码为C2 99。这似乎是正确的

在MS Write中打开文档时,商标字符如下所示:1™.

当我以编程方式获取值时 使用Python,当我从数据库中获取值时,商标字符被替换为“\xbf”-,但据我所知,该字符甚至没有正确编码,因为根据特定的编码,它至少缺少一个前导字节

>>> 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数据库中的数据。我只希望有人验证我在Hex Viewer中看到的内容是否足够测试;

如果要将此字符串保存为html文档输出,请使用:&trade;商标符号的html实体

如果将此字符串用于非html目的,请在运行时解码该字符串,使用:

import HTMLParser
h = HTMLParser.HTMLParser()
s = h.unescape('&trade;')
见:
http://fredericiana.com/2010/10/08/decoding-html-entities-to-text-in-python/字符文字™ 您发布的不是U+0099控制字符,而是U+2122商标符号

Unicode规范U+0099如下所示:

0099;<control>;Cc;0;BN;;;;;N;;;;;
所以,它甚至没有名字,我也没有去挖掘规格,以找出这个角色是为了什么

在Windows中解码U+0099确实会导致一个商标grapheme。我想这是一个bug


UTF-8中商标符号U+2122的正确字节序列为E2 84 A2。

仅供将来参考,因为作者没有发布修复程序。 这确实是一个信息问题,需要什么:

在Informatica框的odbc.ini中更改连接属性,将IANAAppCodePage=106添加到需要UTF8的连接中。 更改Informatica本身中连接的连接属性,并在连接管理器->连接->关系->编辑中添加Codepage=Utf-8
代码0x99是Windows 1252代码页中的商标符号。以及其他几个。您在该数据库中找到的任何内容都没有用utf-8编码。您是对的。Informatica将值写入数据库时,该值的编码不正确。从我自己的测试程序中写入值,我能够检索商标符号。我们正在查看写入过程中出现的错误,或写入前的值处理。由于U+2122在windows-1252中编码为0x99,我猜在某些转码操作中使用了默认的ANSI编码。