现在问题出在第三方的库里,里面有类似 '{0}'.format(string) 的语句,而string是我传入的unicode。
这么一来就UnicodeEncodeError了。
现在的问题是如果在不修改第三方库源代码的情况下,使得代码可以支持中文。
reload(sys) 什么的就算了
这么一来就UnicodeEncodeError了。
现在的问题是如果在不修改第三方库源代码的情况下,使得代码可以支持中文。
reload(sys) 什么的就算了
1
messense May 14, 2015 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 May 14, 2015 via Android
重写format?
|
3
imn1 May 14, 2015
In [5]: u'{0}'.format(u'中文')
Out[5]: u'\u4e2d\u6587' |
4
Sylv May 15, 2015 via iPhone 这是这个库没考虑到 Unicode 的情况。
最根本的方法是修改库的源码,给前面加个 u,还可以给作者发个 PR。 如果不想改人家源码的话,只好先将 string.encode('utf-8') 后再传入第三方的库方法。 其实 Python 2 自带的库有些方法也不支持 Unicode。 |