转:urllib.request.urlopen字符编码报错

错误内容:UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters in position 28-29: ordinal not in range(128)

1.以为是代码错误,检查tab符,并没有问题,

2.将代码粘贴到空白项目中去,发现还是不对。

3.百度:http://blog.csdn.net/olanlanxiari/article/details/48201231

  1.Python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报这样的错UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0x?? in position 1: ordinal not in range(128),python没办法处理非ascii编码的,此时需要自己设置将python的默认编码,一般设置为utf8的编码格式。

  2.将上面问题自身检查,我这不存在这种问题,所以继续百度

  3.发现python3 urlopen()链接地址不能出现中文,,那么有中文怎么办?

    a.办法总是有的:替换

    b.将中文内容通过quote方法替换

       from urllib.parse import quote

       quote(url)

       quote(url,safe=‘/:?=‘)  

    c.quote可用的参数如下:

      quote(string,safe=‘/‘,encoding=None,errors=None)

      reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | ","

时间: 2024-08-07 08:36:45

转:urllib.request.urlopen字符编码报错的相关文章

【使用python urllib时出现[SSL: CERTIFICATE_VERIFY_FAILED]报错的解决方案】

"首先,这个报错是告诉你,你的证书有问题. 其次,出现这个问题的原因,在于Python本身. 问题原因 Python升级到2.7.9以后,引入了一个新特性. 当使用urllib打开https的链接时,会检验一次ssl证书. 而当目标网站使用的是自签名证书时,就会抛出urllib2.URLError的错误. · 所以在爬取https协议的网站或伪装请求头都会导致这个错误. *** 解决方案 方案一 全局取消证书验证 import ssl ssl._create_default_https_cont

python 编码报错问题 'ascii' codec can't encode characters 解决方法

python在安装时,默认的编码是ascii, 当程序中出现非ascii编码时,python的处理常常会报这样的错 'ascii' codec can't encode characters python没办法处理非ascii编码的, 此时需要自己设置将python的默认编码,一般设置为utf8的编码格式. 查看python的默认编码 print sys.getdefaultencoding() 解决方法一(已通过验证,顺带也解决了我之前字符前一直加u的问题) 在python安装目录下,进入\P

python3中urllib.request.urlopen.read读取的网页格式问题

#!/usr/bin/env python3 #-*- coding: utf-8 -*- #<a title="" target="_blank" href="http://blog.sina.com.cn/s/blog_4701280b0102eo83.html"><论电影的七个元素>——关于我对电…</a> import urllib.request str0 =r' <a title="

flask pip utf-8 编码报错处理

今天在公司里安装flask的时候,一切正常,可以正常import flask 但是回到家里,却莫名其妙的报错了. Exception: Traceback (most recent call last): File "c:\users\ruby\appdata\local\programs\python\python36\lib\site-packages\pip\compat\__init__.py", line 73, in console_to_str return s.deco

三个思路解决413 Request Entity Too Large报错处理

最近一个项目当中,要求上传图片,并且限制图片大小,虽然在laravel当中已经添加了相关的表单验证来阻止文件过大的上传,然而当提交表单时,还没轮到laravel处理,nginx就先报错了.当你仔细看报错页面时,你会发现有nginx版本信息,经过分析,这报错是因为nginx的默认上传文件大小配置client_max_body_size只有2MB, 基于nginx验证比laravel验证要早,想要友好报错而不是直接显示413 Request Entity Too Large,那么就有三个思路去解决.

关于网站编码显示问题 效果是 访问 带有中文注释的sass文件出现编码报错。

首先查看环境变量 export declare -x HOME="/home/piperck" declare -x LANG="en_US.UTF-8" declare -x LC_CTYPE="en_US.UTF-8" 格式:declare -x var 格式:typeset -x var 格式:export var 将变量var设置成环境变量,这样在随后的脚本和程序中可以使用. locale的设定及LANG.LC_CTYPE.LC_ALL环

delete操作字符串会报错吗?

其实是不会的."delete只能对对象属性进行操作"的说法是错误的,严谨来说,delete可以对任意变量类型进行操作,只不过只有对对象的属性才能操作成功,对其他变量类型操作失败罢了. 所以这里对b这个字符串进行操作并不会报错,它仍然"尝试着"去进行了删除动作,只不过没有删除成功而已,b还是原来的字符串"123" 原文地址:https://www.cnblogs.com/zhangnan35/p/8624457.html

部署项目到远程tomcat的413 Request Entity Too Large报错处理

当项目jar包过多时,部署项目会报错而错误原因很清楚了,文件太大了. 因为用了nginx代理,而nginx默认文件大小有限,所以需要设置nginx上传文件大小限制 client_max_body_size 2m; 然后重新加载配置即可. 其实本可以不通过nginx转发就可上传,但是直接访问tomcat的manager给我报403错误,未解决.... 原文地址:https://www.cnblogs.com/webyyq/p/9121006.html

python字符串编码报错解决

写了一个简单的脚本,需要把中文目录名写入excel文件 如果不做处理的话,程序会报错误"UnicodeDecodeError: 'ascii' codec can't decode byte 0xb9 in position 2: ordinal" 这是因为ascii无法解码字符0xb9 所以在字符串后面加上其解码所需的字符集,例如string.decode("gbk"),问题就解决了