python 无法使用setdefaultencoding方法

问题描述

python 无法使用setdefaultencoding方法

代码:
import requests
import re
import sys
reload(sys)

sys.setdefaultencoding("gb18030")

type = sys.getfilesystemencoding()

html = requests.get('http://jp.tingroom.com/yuedu/yd300p/')

print html.text

执行报错:
Traceback (most recent call last):
File "C:/Users/sh/PycharmProjects/untitled/regao_yuandaima.py", line 21, in
print html.text
UnicodeEncodeError: 'gbk' codec can't encode character u'xe7' in position 252: illegal multibyte sequence

百度了下,只要import sys 和reload(sys)执行了,都是能获取setdefaultencoding方法的,但是我这边就不行,求大神指教!

解决方案

你的默认encoding已经被设置为gb18030,但是requests用的是unicode,所以要从gb18030转成unicode。由于你获得的网页本身就是utf-8,所以以gbk来解码这个网页内容就出错了。所以出现了这个UnicodeEncodeError。如果你不设置setdefaultencoding()就没问题。

解决方案二:

你应该用默认的UTF8等编码,获取requests的请求,根据返回内容,你再对应的转换为gb18030编码等来做,而不是设置整个编码格式

时间: 2024-09-20 16:33:20

python 无法使用setdefaultencoding方法的相关文章

浅谈Python中copy()方法的使用

  这篇文章主要介绍了浅谈Python中copy()方法的使用,Python中的拷贝分为潜拷贝和深拷贝,本文只是简单介绍用法,需要的朋友可以参考下 copy()方法返回字典的浅拷贝. 语法 以下是copy()方法的语法: ? 1 dict.copy() 参数 NA 返回值 此方法返回字典的浅拷贝. 例子 下面的例子显示了copy()方法的使用. ? 1 2 3 4 5 6 #!/usr/bin/python   dict1 = {'Name': 'Zara', 'Age': 7};   dict

在Python中用get()方法获取字典键值的教程

  这篇文章主要介绍了在Python中用get()方法获取字典键值的教程,是Python入门中的基础知识,需要的朋友可以参考下 get()方法返回给定键的值.如果键不可用,则返回默认值None. 语法 以下是get()方法的语法: ? 1 dict.get(key, default=None) 参数 key -- 这是要搜索在字典中的键. default -- 这是要返回键不存在的的情况下默认值. 返回值 该方法返回一个给定键的值.如果键不可用,则返回默认值为None. 例子 下面的例子显示了g

在Python中用keys()方法返回字典键的教程

  这篇文章主要介绍了在Python中用keys()方法返回字典键的教程,是Python入门中的基础知识,需要的朋友可以参考下 keys()方法返回在字典中的所有可用的键的列表. 语法 以下是keys()方法的语法: ? 1 dict.keys() 参数 NA 返回值 此方法返回在字典中的所有可用的键的列表. 例子 下面的例子显示keys()方法的用法. ? 1 2 3 4 5 #!/usr/bin/python   dict = {'Name': 'Zara', 'Age': 7}   pri

Python中title()方法的使用简介

  这篇文章主要介绍了Python中title()方法的使用简介,是Python入门中的基础知识,需要的朋友可以参考下 title()方法返回所有单词的第一个字符大写的字符串的一个副本. 语法 以下是title()方法的语法: ? 1 str.title(); 参数 NA 返回值 此方法返回其中所有单词的前几个字符都是大写的字符串的一个副本. 例子 下面的例子显示了title()方法的使用. ? 1 2 3 4 #!/usr/bin/python   str = "this is string

Python中zfill()方法的使用教程

  这篇文章主要介绍了Python中zfill()方法的使用教程,是Python入门中的基础知识,需要的朋友可以参考下 zfill()方法用零垫串来填充左边宽度. 语法 以下是zfill()方法的语法: ? 1 str.zfill(width) 参数 width -- 这是字符串的最终宽度,即填充零后得到的宽度. 返回值 此方法返回补齐的字符串. 例子 下面的例子显示了zfill()方法的使用. ? 1 2 3 4 5 6 #!/usr/bin/python   str = "this is s

Python中用max()方法求最大值的介绍

 这篇文章主要介绍了Python中用max()方法求最大值的介绍,是Python入门中的基础知识,需要的朋友可以参考下     max() 方法返回其参数最大值:最接近正无穷大的值. 语法 以下是max()方法的语法: ? 1 max( x, y, z, .... ) 参数 x -- 这是一个数值表达式. y -- 这也是一个数值表达式. z -- 这是一个数值表达式. 返回值 此方法返回其参数的最大值. 例子 下面的例子显示了max()方法的使用. ? 1 2 3 4 5 6 #!/usr/b

Python中degrees()方法的使用

  这篇文章主要介绍了Python中degrees()方法的使用,是Python入门中的基础知识,需要的朋友可以参考下 degrees()方法从弧度转换到度角x 语法 以下是degrees()方法的语法: ? 1 degrees(x) 注意:此函数是无法直接访问的,所以我们需要导入math模块,然后需要用math的静态对象来调用这个函数. 参数 返回值 x -- 这必须是一个数值. 此方法返回一个角度的度数值. 例子 下面的例子显示degrees()方法的使用. ? 1 2 3 4 5 6 7

Python中用split()方法分割字符串的使用

  这篇文章主要介绍了在Python中用split()方法分割字符串的使用介绍,是Python入门中的基础知识,需要的朋友可以参考下 split()方法返回的字符串中的所有单词的列表,使用str作为分隔符(如果在未指定的所有空格分割),可选择限当前分割为数量num. 语法 以下是split()方法的语法: ? 1 str.split(str="", num=string.count(str)). 参数 str -- 这是任何分隔符,默认情况下是空格. num -- 这是要分割的行数.

Python中用sleep()方法操作时间的教程

  这篇文章主要介绍了Python中用sleep()方法操作时间的教程,是Python入门学习中的基础知识,需要的朋友可以参考下 mktime()方法是localtime()反函数.它的参数是struct_time或全9元组,它返回一个浮点数,为了兼容时time(). 如果输入值不能表示为有效的时间,那么OverflowError或ValueError错误将被引发. Syntax 以下是mktime()方法的语法: ? 1 time.mktime(t) 参数 t -- 这是struct_time