Python / Django:如何将utf-16 str字节转换为unicode?

时间:2013-08-23 22:14:19

标签: python django unicode encoding utf-16

研究员,

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

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

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

  3. 接收文件
  4. 逐行:for line in filename: yield line

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

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

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

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

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

  10. 执行此操作的最丑陋方式之一是使用line[-5:](= '\x001\x003\x00')进行检索,从而使用line[-5:][1]line[-5:][3]进行构建。

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

    提前致谢!

1 个答案:

答案 0 :(得分:3)

使用codecs.iterdecode()动态解码对象:

from codecs import iterdecode

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