Python - 将unicode和hex转换为unicode

时间:2017-02-07 21:13:08

标签: python unicode encoding mojibake

我有一个像这样的unicode字符串:

  

U'\ XC3 \ XA3 \ XC6 \ u2019 \ XC2版权所有\ xA9 \ XC3 \ XA3 \ XC6 \ u2019 \ XE2 \ u20ac \ u201c \ XC3 \ XA3 \ XC6 \ u2019 \ XC2版权所有\ xA9 \ XC3 \ XA3 \ XE2 \ u20ac \ u016​​1 \ XC2 \ XA4 \ XC3 \ XA3 \ XC6 \ u2019 \ XE2 \ u20ac \ u201c \ XC3 \ XAF \ XC2 \ XBC \ XC2 \ X81 \ XC3 \ XA3 \ XE2 \ u20ac \ u016​​1 \ XC2 \ xb9 \ XC3 \ XA3 \ XE2 \ u20ac \ u016​​1 \ XC2 \ XAF \ XC3 \ XA3 \ XC6 \ u2019 \ XC2 \ XBC \ XC3 \ XA3 \ XC6 \ u2019 \ XC2 \ XAB \ XC3 \ XA3 \ XE2 \ u20ac \ u016​​1 \ XC2 \ XA2 \ XC3 \ XA3 \ XE2 \ u20ac \ u016​​1 \ XC2 \ XA4 \ XC3 \ XA3 \ XC6 \ u2019 \ XE2 \ u20ac \ XB0 \ XC3 \ XA3 \ XC6 \ u2019 \ XC2 \ XAB \ XC3 \ XA3 \ XC6 \ u2019 \ XE2 \ u20ac \ XA2 \ XC3 \ XA3 \ XE2 \ u20ac \ u016​​1 \ XC2 \ XA7 \ XC3 \ XA3 \ XE2 \ u20ac \ u016​​1 \ XC2 \ xb9 \ XC3 \ XA3 \ XC6 \ u2019 \ XE2 \ u20ac \ XA0 \ XC3 \ XA3 \ XE2 \ u20ac \ u016​​1 \ XC2 \ XA3 \ XC3 \ XA3 \ XC6 \ u2019 \ XC2 \ X90 \ XC3 \ XA3 \ XC6 \ u2019 \ XC2 \ XAB \ XC3 \ XAF \ XC2 \ XBC \ XCB \ u2020 \ XC3 \ XA3 \ XE2 \ u20ac \ u016​​1 \ XC2 \ xb9 \ XC3 \ XA3 \ XE2 \ u20ac \ u016​​1 \ XC2 \ XAF \ XC3 \ XA3 \ XC6 \ u2019 \ XE2 \ u20ac \ XA2 \ XC3 \ XA3 \ XE2 \ u20ac \ u016​​1 \ XC2 \ XA7 \ XC3 \ XA3 \ XE2 \ u20ac \ u016​​1 \ XC2 \ xb9 \ XC3 \ XAF \ XC2 \ XBC \ XE2 \ u20ac \ XB0'

如何从中获取正确的unicode字符串?我认为,实际的unicode值是ラブライブ!スクールアイドルフェスティバル(スクフェス)

1 个答案:

答案 0 :(得分:5)

你有Mojibake,错误解码的文章。

您可以使用ftfy library取消伤害:

.icon-wrapper {
  background-color: powderblue;
}

/* Does not work */
li .icon-wrapper:first-of-type {
  background-color: lavender;
}

根据>>> from ftfy import fix_text >>> fix_text(s) u'\u30e9\u30d6\u30e9\u30a4\u30d6!\u30b9\u30af\u30fc\u30eb\u30a2\u30a4\u30c9\u30eb\u30d5\u30a7\u30b9\u30c6\u30a3\u30d0\u30eb(\u30b9\u30af\u30d5\u30a7\u30b9)' >>> print fix_text(s) ラブライブ!スクールアイドルフェスティバル(スクフェス) ,您的数据被编码为UTF-8,然后被解码为Windows代码页1252; ftfy.fixes.fix_one_step_and_explain() function显示了所需的修复步骤:

ftfy

(需要'sloppy' encoding,因为并非所有UTF-8字节都可以解码为>>> ftfy.fixes.fix_one_step_and_explain(s)[-1] [(u'encode', u'sloppy-windows-1252', 0), (u'decode', u'utf-8', 0)] ,但是一些不良解码器只会复制原始字节;特殊编解码器会反转该过程。)

事实上,在你的情况下,这已经完成 两次 ,这不是我以前见过的壮举:

cp1252