[英]Unicode decode error using codecs.open()
我遇到了一个字符编码问题,如下所示:
rating = 'Barntillåten'
new_file = codecs.open(os.path.join(folder, "metadata.xml"), 'w', 'utf-8')
new_file.write(
"""<?xml version="1.0" encoding="UTF-8"?>
<ratings>
<rating system="%s">%s</rating>
</ratings>""" % (values['rating_system'], rating))
我得到的错误是:
File "./assetshare.py", line 314, in write_file
</ratings>""" % (values['rating_system'], rating))
我知道编码错误与Barntillåten
相关,因为如果我用test
替换该词,该函数可以正常工作。
为什么会发生这种编码错误,我需要做些什么来修复它?
在 Python 2 中, codecs.open
期望读取和写入unicode
对象。 你传递给它一个str
。
解决方法是确保您传递的数据是unicode
:
new_file.write((
"""<?xml version="1.0" encoding="UTF-8"?>
"""<ratings>
<rating system="%s">%s</rating>
</ratings>""" % (values['rating_system'], rating)
).decode('utf-8'))
如果您使用unicode
文字( u"..."
),那么 Python 将尝试确保所有数据都是unicode
。 这里有rating = u'Barntillåten'
就足够了:
rating = u'Barntillåten'
new_file = codecs.open(os.path.join(folder, "metadata.xml"), 'w', 'utf-8')
new_file.write(
"""<?xml version="1.0" encoding="UTF-8"?>
"""<ratings>
<rating system="%s">%s</rating>
</ratings>""" % (values['rating_system'], rating))
您可以编写成codecs.open
文件str
对象,但只有当str
在默认编码,编码这意味着,为了安全,如果这是唯一安全的str
是纯ASCII。 默认编码是并且应该保留为 ASCII; 请参阅更改 Python 的默认编码?
您需要使用unicode
文字。
u'...'
u"..."
u'''......'''
u"""......"""
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.