什么8位字符集是0x9d有意义?

Joh*_*gle 6 python string unicode utf-8 character-encoding

用于英语的8位ASCII字符集是否0x9d有意义?我正在清理一些旧的数据文件,偶尔会找到一个0x9dASCII文本.(不,它不是UTF-8.)

它在Windows-1252中无效.Python"latin-1"编解码器将其转换为Unicode 0x9D,即"操作系统命令".这没什么意义.在Unicode中,您将获得一个包含[009d]的框.(在Python中,您可以将任何内容转换为Latin-1而不会引发错误,但这并不意味着这样做是有意义的.)

使用Python类型转义的示例,来自凌乱的数据库,我正在清理它,它结合了许多来源的文本:

Guitar Pro, JamPlay, RedBana\\\'s Audition,\x9d Doppleganger\x99s The Lounge\x9d or Heatwave Interactive\x99s Platinum Life Country,\\"

for example \\"I\\\'ve seen the bull run in Pamplona, Spain\x9d.\\" Everything

Netwise Depot is  a \\"One Stop Web Shop\\"\x9d that provides sustainable \\"green\\"\x9d living

are looking for a \\"Do It for Me\\"\x9d solution
Run Code Online (Sandbox Code Playgroud)

从背景来看,我怀疑是™或®.但那些8位代码有那些?

小智 5

这是一个完全疯狂的假设:

一些先前(真正破坏的)系统处理这个数据试图将每个字符写为UTF-8,但实际上只写了每个序列的最后一个字节(也许它在某处有一个奇怪的一个字节长的缓冲区).或者,它过去是UTF-8,但有人用不同的编码查看它做了搜索和替换以删除字节0xE2 0x80,因为它们显然"不属于"并且没有意识到剩下的"特殊性格"不是他们想要的那个.

当然,ASCII将被传递,因为它的UTF-8编码长度为一个字节.

'右单引号'(U + 2019)以UTF-8编码,字节为0xE2 0x80 0x99.你所拥有的地方\x99s是让我沿着这条道路前进的地方,因为在s之前的撇号通常会被翻译成流行的文字处理软件中的右弯引号.如果只保存了字符的最后一个字节,那么你只需要0x99.

'右双引号(U + 201D)以UTF-8编码,字节为0xE2 0x80 0x9D.您文本中的0x9D通常位于双引号字符串的末尾.并且,它通常紧挨着常规的"双引号.我想知道是否有人试图对数据进行某种先前的清理传递,并设法回到收尾报价,但在那里留下了"奇怪的"0x9D.

正如我所说,这是一个疯狂的假设,但如果这是来自各种旧系统的数据集合,则很难知道它究竟发生了什么.UTF-8的最后一个字节就是我能找到的最接近的"正常"英文编码,它在英文文本中会有一些合理的,并包含你要查找的字节.


Yan*_*ier 1

Windows-1256中,用于阿拉伯语语言环境,\x99是一个商标符号,并且\x9d是零宽度非连接符。从所列职位来看,这似乎是合理的,尽管可能是多余的。当然不乏可供尝试的字符集。

chardet是一种自动尝试猜测的工具。