首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python编解码模块

Python编解码模块
EN

Stack Overflow用户
提问于 2012-01-22 15:39:18
回答 1查看 6.5K关注 0票数 2

我正在尝试将保存为UTF-8的文件加载到python (ver2.6.6)中,其中包含14种不同的语言。我使用python模块来解码txt文件。

代码语言:javascript
复制
import codecs
f = open('C:/temp/list_test.txt', 'r')
    for lines in f:
        line=filter_str(lines.decode("utf-8")

这一切都很好。我解析整个文件,然后导出14个不同的语言文件。我无法理解的问题是:

输出使用以下代码:

代码语言:javascript
复制
malangout = codecs.open("C:/temp/'polish.txt",'w','utf-8','surrogateescape')
    for item in lang_dic['English']:
         temp = lang_dic[lang1][item]
         malangout.write(temp + '\n')
    malangout.close() 

示例:

Polish

  • Expected

  • 语言:输出: Dziennik zakłóceń
  • Actual输出: Dziennik zak,óceƒ

字符串按如下方式存储:

代码语言:javascript
复制
u'Dziennik zak\u201a\xf3ce\u0192'

我尝试过从python文档中进行许多编码(7.8码)。在这一点上,任何信息都会有所帮助。

EN

回答 1

Stack Overflow用户

发布于 2012-01-22 15:46:50

字符串按如下方式存储:

U‘’Dziennik\u201a\xf3ce\u0192‘

嗯,这是个问题,因为

代码语言:javascript
复制
In [25]: print(u'Dziennik zak\u201a\xf3ce\u0192')
Dziennik zak‚óceƒ

代码语言:javascript
复制
In [26]: print(u'Dziennik zak\u0142\xf3ce\u0144')
Dziennik zakłóceń

所以看起来你存储的unicode是不正确的。你确定在C:/temp/list_test.txt中它是正确的吗?也就是说,list_test.txt是否包含

代码语言:javascript
复制
In [28]: u'Dziennik zak\u201a\xf3ce\u0192'.encode('utf-8')
Out[28]: 'Dziennik zak\xe2\x80\x9a\xc3\xb3ce\xc6\x92'

代码语言:javascript
复制
In [27]: u'Dziennik zak\u0142\xf3ce\u0144'.encode('utf-8')
Out[27]: 'Dziennik zak\xc5\x82\xc3\xb3ce\xc5\x84'

PS。你可能想要改变

代码语言:javascript
复制
temp + '\n'

代码语言:javascript
复制
temp + u'\n'

为了说明清楚,您将两个unicode相加在一起,形成一个unicode。上述两行在Python2中的结果相同,但在Python3中,将unicodestr相加将引发TypeError。即使在Python3中,'\n'unicode,我认为向Python3过渡的挑战将是改变一个人对混合unicodestr的心理态度。在Python2中,它是为您默默尝试的,而在Python3中,它是不允许的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8962242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档