我有一个文本数据源,其中包括字节序列c3 82 c2 bf。在上下文中,我认为它应该是大写希腊语Phi符号(Φ)。
不管怎样,我不知道使用了什么编码;我正在编写一个Python脚本,将这些数据处理到一个需要Unicode的数据库中,它会对这个特定的数据序列抛出一个异常。
关于如何处理有什么建议吗?
解释为UTF-8,c382是"U+00C2,c2-bf是"?"U+00BF,这没有多大意义,但它在技术上是有效的UTF-8数据,因此不应报告为字符级数据错误。被解释为UTF-16,它是朝鲜文音节,可能是CJK表意文字,取决于词尾,但仍然是形式上有效的数据,尽管很可能不是什么意思。
这听起来像是双重转换的结果,但很难做出有根据的猜测。如果它代表Φ,那么UTF-16格式是03 A6或A6 03,UTF-8格式是CE A6,这与实际数据并不相似。有关数据来源的信息可能有助于猜测可能发生了什么代码转换。
这可能是Ñ
字符的双重转换。
UTF-8中的Ñ
字符为:0xc391
。
如果您尝试将已经用UTF-8编码的Ñ
字符从LATIN-1转换为UTF-8,您将得到:0xc382c2bf
。
为什么?
0xc382
是UTF-8从LATIN-10xc3
字符Ã
(带波浪号的A)的翻译0xc2bf
是¿
字符,当您无法转换LATIN-1中的字符时,会得到该字符(0x91
是LATIN-1中无效的字符
FWIW,我最终从
得到了c3 82 c2 bf
。我没有深入研究转换,因为我可以简单地丢弃这部分代码。只要说
在一个由wordpress(php)插件处理的html电子邮件模板中就足够了。
我不知道原因。但也许有一个可能的场景。
二进制x0xx转换为0xC2 x0xx
二进制x1xx转换为0xC3 x0xx
所以添加了很多c2和c3。
这是在哪里发生的?为ajax调用发送url中的非ascii查询字符串,Flask服务器将执行此操作。
在使用$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(["xc2xa0","xc3x82"], '', $price);