【问题标题】:Problems with python when encoding string of UTF-16 to readable text [duplicate]将UTF-16字符串编码为可读文本时出现python问题[重复]
【发布时间】:2020-02-26 12:02:22
【问题描述】:

我正在从网站上抓取一些数据并使用正则表达式我能够提取一些 UTF-16 格式的字符串。使用this 站点,我能够解码我提取的字符串,但我想在 Python 中完成这一切。
提取的文本是 String 格式,而不是字节。所以一个简单的.encode() 是行不通的。
例如:
字符串:\u0074\u0065\u0073\u0074 --> 字符串:test
我可以考虑通过将字符串视为字节对象来解决这个问题,但我不知道该怎么做。

编辑:我使用正则表达式提取的数据块:

I = new Array();

I[0] = new Array();
I[0][1] = new Array();
I[0][1][0] = new Array();
I[0][1][0][0] = '\u0074\u0065\u0073\u0074';
I[0][2]='';

任何帮助表示赞赏。
谢谢

【问题讨论】:

  • 我找不到这个问题的任何重复项,所以如果你找到一个,请在这里链接,谢谢
  • Unicode 是可读的文本。您现在阅读的页面是 Unicode(特别是 UTF8),这就是为什么我可以写 Αυτό Εδώ 并且知道它会毫无问题地出现。您发布的是转义序列
  • 您为什么认为涉及到任何类型的编码或解码?您在哪里看到这些转义序列,该字符串是如何构造的?可能是转义序列只是调试器显示这些字符的方式
  • @PanagiotisKanavos 它是在网页中使用 Javascript 构建的。我对js不太熟悉,但我还是会用更多信息编辑帖子
  • Javascript 字符串是 UTF16,就像 Java 和 C#(在 SO 中使用)一样。不需要编码。您发布的只是转义序列。事实上,如果我只是在 Python3 中输入 '\u0074\u0065\u0073\u0074',我会在控制台中得到 test。如果我输入 '\u0074\u0065\u0073\u0074'=='test' 我会得到 True

标签: python unicode type-conversion decode


【解决方案1】:

如果你不关心安全,最简单的方法是eval

eval('"' + yourstringhere + '"')

但正确的做法是:

x = bytes(yourstringhere, "utf-8").decode("unicode_escape")

yourstringhere 的变量显然应该包含您在运行之前提到的“String”对象。

首先,我们使用bytes 函数将字符串转换为字节。然后我们使用称为unicode_escape 的特殊编码进行解码,它将\u.... 序列解析为实际的unicode 字符

【讨论】:

    猜你喜欢
    • 2014-01-18
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 2020-07-17
    相关资源
    最近更新 更多