XnI*_*RaM 3 python unicode utf-8 python-2.7
同
print(" {:d}). {:s} ({:d})".format(i, account, num_char))
Run Code Online (Sandbox Code Playgroud)
我收到错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 4: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
但当我把它改为:
print " %d). %s (%d)" % (i, account, num_char)
Run Code Online (Sandbox Code Playgroud)
然后没有问题,输出与两个打印相同.
那么第一个表达式出了什么问题,为什么它在第二个表达式中有效呢?
在第一个示例中,您正在调用对象传递参数的format方法.这会导致错误.你应该用strunicode
print(u" {:d}). {:s} ({:d})".format(i, account, num_char))
Run Code Online (Sandbox Code Playgroud)
代替.
在第二个中,您使用的是在格式或对象时%自动返回的运算符.来自文档:unicodeunicode
- 如果提供的对象或格式是unicode字符串,则生成的字符串也将是unicode.