【问题标题】:Python/Django: How to convert utf-16 str bytes to unicode?Python/Django:如何将 utf-16 str 字节转换为 unicode?
【发布时间】:2013-08-23 22:14:18
【问题描述】:

同学们,

我无法解析使用 django 表单提交的 unicode 文本文件。以下是我执行的快速步骤:

  1. 上传了一个文本文件(编码:utf-16)(文件内容:Hello World 13

  2. 在服务器端,使用filename = request.FILES['file_field']接收文件

  3. 逐行查看:for line in filename: yield line

  4. type(filename) 给我<class 'django.core.files.uploadedfile.InMemoryUploadedFile'>

  5. type(line)<type 'str'>

  6. print line : '\xff\xfeH\x00e\x00l\x00l\x00o\x00 \x00W\x00o\x00r\x00l\x00d\x00 \x001\x003\x00'

  7. codecs.BOM_UTF16_LE == line[:2] 返回True

  8. 现在,我想重新构造 unicode 或 ascii 字符串,如“Hello World 13”,以便我可以解析行中的整数。

这样做最难看的方法之一是使用line[-5:] (= '\x001\x003\x00') 进行检索,然后使用line[-5:][1]line[-5:][3] 进行构造。

我相信一定有更好的方法来做到这一点。请帮忙。

提前致谢!

【问题讨论】:

    标签: python django unicode encoding utf-16


    【解决方案1】:

    使用codecs.iterdecode() 即时解码对象:

    from codecs import iterdecode
    
    for line in iterdecode(filename, 'utf16'): yield line
    

    【讨论】:

      猜你喜欢
      • 2010-09-21
      • 2012-02-22
      • 2021-06-15
      • 2015-10-08
      • 2014-05-22
      • 1970-01-01
      • 2018-04-29
      • 2011-06-05
      • 2015-07-20
      相关资源
      最近更新 更多