1
lizheming 2014-06-19 15:57:18 +08:00
测试没有问题...
|
2
yhf 2014-06-19 16:11:56 +08:00
加上
import sys default_encoding = 'utf-8' if sys.getdefaultencoding() != default_encoding: reload(sys) sys.setdefaultencoding(default_encoding) |
3
yakczh OP @yhf line 14, in <module>
print(table) UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 597: illegal multibyte sequence |
6
lizheming 2014-06-19 20:12:21 +08:00
@cbsw 看楼主的错误信息,终端无误了,正好前两天碰上了这个问题。
楼主的问题在于终端使用了`GBK`编码(在Windows CMD或者Sublime(其实也是调用CMD)下就是这样的),字符串是`utf-8`编码,在从`utf-8`转换到`GBK`显示的过程中,由于`utf-8`的字符集比`GBK`要大,所以存在`GBK`无法编码的情况,所以就会报此错误。解决办法就是把终端的编码方式改为`utf-8`或者GBK大字符集`GBK10830`(不确定后面那个数字打正确了,请自行搜索吧-。-)... |
7
yakczh OP 参考 http://www.newsmth.net/bbsanc.php?path=%2Fgroups%2Fcomp.faq%2FPython%2Ftext%2FPython3000%2FM.1236069588.l0 上面的写法
for table in tables: print(type(table.text)) sys.stdout.write(table.text.encode("utf-8")) 输出<class 'str'> sys.stdout.write(table.text.encode("utf-8")) TypeError: must be str, not bytes table.text输出是str 又提示TypeError: must be str, not bytes 好奇怪 |
8
imn1 2014-06-19 21:08:16 +08:00
table.text.decode("utf-8")
|
10
imn1 2014-06-19 21:18:28 +08:00
直接 print(table.text) 有错误么?
|
11
yakczh OP set PYTHONIOENCODING=utf-8 加这个管用
|