1
messense 2015-05-14 19:23:53 +08:00 1
In [1]: def func(s):
...: return '{0}'.format(s) ...: In [2]: func('123') Out[2]: '123' In [3]: func(u'呵呵') --------------------------------------------------------------------------- UnicodeEncodeError Traceback (most recent call last) <ipython-input-3-f4d18df38e04> in <module>() ----> 1 func(u'呵呵') <ipython-input-1-62fe9e7b06ab> in func(s) 1 def func(s): ----> 2 return '{0}'.format(s) 3 UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128) In [4]: func(u'呵呵'.encode('utf-8')) Out[4]: '\xe5\x91\xb5\xe5\x91\xb5' |
2
gamexg 2015-05-14 20:55:54 +08:00 via Android
重写format?
|
3
imn1 2015-05-14 21:43:54 +08:00
In [5]: u'{0}'.format(u'中文')
Out[5]: u'\u4e2d\u6587' |
4
Sylv 2015-05-15 02:59:44 +08:00 via iPhone 1
这是这个库没考虑到 Unicode 的情况。
最根本的方法是修改库的源码,给前面加个 u,还可以给作者发个 PR。 如果不想改人家源码的话,只好先将 string.encode('utf-8') 后再传入第三方的库方法。 其实 Python 2 自带的库有些方法也不支持 Unicode。 |