【问题标题】:decode a unicode data Python解码 unicode 数据 Python
【发布时间】:2017-04-16 11:47:55
【问题描述】:

我正在使用 Rpi 从 SQL Server 的表中提取信息,目前在 Python 中解码以下未编码数据时遇到了一些问题:u'\U00300032\U00360031\U0030002d\U002d0039\U00310032' 这是一个日期数据,当我将此值分配给一个变量时我收到此错误:

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-9: end of string in escape sequence

我已经阅读了很多关于该主题的信息,但我没有找到有用的信息,我想要的是转换为字符串类型。我在这里遗漏了什么吗?

【问题讨论】:

  • “当我试图分配给一个变量时”。你的意思是你试图把这个文字字符串分配给一个变量?你能告诉我们你的代码吗?
  • 这个答案似乎是一个可能的解决方案“Unicode Error ”unicodeescape" codec can't decode bytes…,将u' 替换为r'
  • Jean,有点类似,我正在做的是:从 Python 开始执行一个查询,我收到我请求的所有数据的列表,其中一个是日期数据,python 以该数据为例u'\U00300032\U00360031\U0030002d\U002d0039\U00310032',当我尝试按字面意思执行此操作时:date_sql =sql_list[3],其中 sql_list[3] 为 u'\U00300032\ U00360031\U0030002d\U002d0039\U00310032',我有错误。 downshift 我认为是一个很好的答案,问题是我无法操纵信息,因为错误首先出现或很好地出现在我不知道该怎么做的那一刻。谢谢!!

标签: python sql-server string unicode raspberry-pi2


【解决方案1】:

u'\U0010FFFF' 是最大的 Unicode 代码点。您的表示意味着数据被解码为 UTF-32LE,但 Python(至少是 2.7.12)会给出:

UnicodeDecodeError: 'utf32' codec can't decode bytes in position 0-3: code point not in range(0x110000)

如果原始数据以 UTF-32LE 字节写出并正确解码为 UTF-16LE,您将获得日期数据:

>>> data = '\x32\x00\x30\x00\x31\x00\x36\x00\x2d\x00\x30\x00\x39\x00\x2d\x00\x32\x00\x31\x00'
>>> data.decode('utf-16le')
u'2016-09-21'

【讨论】:

    猜你喜欢
    • 2019-12-19
    • 2012-04-10
    • 2014-11-14
    • 2021-09-01
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    相关资源
    最近更新 更多