9

我有一个包含字节序列 c3 82 c2 bf 的文本数据源。在上下文中,我认为它应该是一个大写的希腊 Phi 符号 (Φ)。

无论如何,我无法弄清楚正在使用什么编码;我正在编写一个 Python 脚本来将这些数据处理到一个需要 Unicode 的数据库中,并且它会在这个特定的数据序列上抛出一个异常。

关于如何处理它的任何建议?

4

5 回答 5

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,与实际数据不太相似。有关数据来源的信息可能有助于猜测可能发生了什么转码。

于 2012-07-18T17:13:25.940 回答
11

这可能是Ñ字符的双重转换。

ÑUTF-8中的字符是:0xc391.

如果您尝试将已用 UTF-8 编码的字符从LATIN-1转换为UTF -8,您将得到:.Ñ0xc382c2bf

为什么?

  1. 0xc382是来自LATIN-1字符的UTF-8翻译(带波浪号的 A) 0xc3Ã
  2. 0xc2bf¿当您无法从LATIN-1转换字符时得到的字符(在LATIN-10x91中是无效字符
于 2013-02-08T14:56:29.930 回答
4

FWIW,我最终c3 82 c2 bf . 我没有深入研究转换,因为我可以简单地将那部分代码扔掉。可以说这 是在由 wordpress (php) 插件处理的 html 电子邮件模板中。

于 2014-09-16T14:47:30.407 回答
0

我不知道原因。但也许有一个可能的场景。

二进制 x0xx 转换为 0xC2 x0xx

二进制 x1xx 转换为 0xC3 x0xx

所以添加了很多c2和c3。

这发生在哪里?在 ajax 调用的 url 查询字符串中发送非 ascii,Flask 服务器将执行此操作。

于 2019-01-24T09:34:06.890 回答
-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);
于 2019-08-05T18:57:59.170 回答