我有一个文本数据源,包括字节序列c3 82 c2 bf。在上下文中,我认为它应该是首都希腊披披符号(Φ)。
无论如何我无法弄清楚正在使用什么编码;我正在编写一个Python脚本来将这些数据处理成一个需要Unicode的数据库,它会在这个特定的数据序列上引发异常。
有关如何处理它的任何建议?
答案 0 :(得分:18)
解释为UTF-8,c3 82是“”U + 00C2而c2 bf是“¿”U + 00BF,这没有多大意义,但它在技术上是有效的UTF-8数据,所以它不应该是报告为字符级数据错误。解释为UTF-16,它是Hangul音节,可能是CJK表意文字,取决于字节顺序,但仍然是正式有效的数据,尽管很可能不是那个意思。
这听起来像双重转换的结果,但很难做出有根据的猜测。如果它代表Φ,那么UTF-16形式是03 A6或A6 03,而UTF-8形式是CE A6,它们实际上与实际数据不相似。有关数据来源的信息可能有助于猜测可能发生的转码。
答案 1 :(得分:10)
这可能是Ñ
字符的双重转换。
Ñ
字符为:0xc391
。
如果您尝试将 LATIN-1 转换为 UTF-8 ,则已在 UTF-8中编码的Ñ
字符强>,你会得到:0xc382c2bf
。
为什么?
0xc382
来自 LATIN-1 0xc3
字符Ã
的 UTF-8 翻译(带代字号的A)0xc2bf
是¿
字符,这是您无法转换 LATIN-1 中的字符时所获得的字符(0x91
是一个无效字符的 LATIN-1 强> 答案 2 :(得分:3)
FWIW,我最终得到了来自c3 82 c2 bf
的{{1}}。我没有深入研究转换因为我能够简单地抛弃那部分代码。我只想说
在一个由wordpress(php)插件处理的html电子邮件模板中。
答案 3 :(得分:0)
我不知道原因。但是也许有一个场景。
二进制x0xx转换为0xC2 x0xx
二进制x1xx转换为0xC3 x0xx
因此添加了很多c2和c3。
这发生在哪里?发送url查询字符串中的非ascii进行ajax调用,Flask服务器将执行此操作。
答案 4 :(得分:-1)
在使用$ str = mb_convert_encoding($ content,“ UTF-8”,“ UTF-16LE”)转换为utf-8后,我已经从外部utf-16文档中收到了此字符\ xc3 \ x82。 (PHP)
原始序列为0xA0 0x00,转换器将其转换为NBSP的含义..它是货币编号中千位分隔符的字符。 nbsp是\ xc2 \ xa0,所以现在我可以删除成千上万个
$price = str_replace(["\xc2\xa0","\xc3\x82"], '', $price);