
1 lizheming Jun 19, 2014 测试没有问题... |
2 yhf Jun 19, 2014 加上 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 Jun 19, 2014 @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 Jun 19, 2014 table.text.decode("utf-8") |
10 imn1 Jun 19, 2014 直接 print(table.text) 有错误么? |
11 yakczh OP set PYTHOnIOENCODING=utf-8 加这个管用 |