本文介绍了关于unicode和utf-8编码,python中的`%`-format操作符和`str.format()`之间有区别吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
假设
n = u"Tübingen"
repr(n) # `T\xfcbingen` # Unicode
i = 1 # integer
以下第一个文件抛出
UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 82: ordinal not in range(128)
当我做 n.encode('utf8')
第二件作品在两种情况下均无瑕疵。
The second works flawless in both cases.
# Python File 1
#
#!/usr/bin/env python -B
# encoding: utf-8
print '{id}, {name}'.format(id=i, name=n)
# Python File 2
#
#!/usr/bin/env python -B
# encoding: utf-8
print '%i, %s'% (i, n)
鼓励使用文档使用 format()
而不是%
格式的运算符,我不会低估d为什么 format()
似乎更加handicaped。 format()
只适用于 utf8
-strings?
Since in the documentation it is encouraged to use format()
instead of the %
format operator, I don't understand why format()
seems more "handicaped". Does format()
only work with utf8
-strings?
推荐答案
您没有使用 string.format
,而没有字符串但 unicode
object。
You're using string.format
while you don't have a string but an unicode
object.
print u'{id}, {name}'.format(id=i, name=n)
将工作,因为它使用 unicode.format
。
will work, since it uses unicode.format
instead.
这篇关于关于unicode和utf-8编码,python中的`%`-format操作符和`str.format()`之间有区别吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!