处理urllib.request.urlopen报错UnicodeEncodeError:‘ascii‘

参考:[Python3填坑之旅]一·urllib模块网页爬虫访问中文网址出错

目录

一、报错内容

二、报错截图

三、解决方法

四、实例代码

五、运行截图

六、其他UnicodeEncodeError: 'ascii' codec 问题


一、报错内容

UnicodeEncodeError: 'ascii' codec can't encode characters in position 22-23: ordinal not in range(128)

二、报错截图

三、解决方法

字母、数字和 '_.-~' 等字符一定不会被转码。 在默认情况下,此函数只对 URL 的路径部分进行转码。 可选的 safe 形参额外指定不应被转码的 ASCII 字符,其默认值为 '/'。--Python官方文档

1、urllib解析含中文的url时,单独编码中文部分,最后拼接

# -*- coding: UTF-8 -*-
from urllib import request, error, parse

city = '徐州'
city = parse.quote(city)  # urllib处理中文,需要编码
url = 'https://***.***.com/api?city={}'.format(city)

  2、直接对url整体中的中文进行编码,默认不对/字母编码,但会对url中的:=?空格等编码

url = 'https://***.***.com/api?city=徐州'
url = parse.quote(url, safe='/:=?')  # urllib处理中文,需要编码

四、实例代码

1、单独处理中文编码

# -*- coding: UTF-8 -*-
from urllib import request, error, parse

city = '徐州'
city = parse.quote(city)  # urllib处理中文,需要编码
url = 'https://***.***.com/api?city={}'.format(city)

response = request.urlopen(url)
print(response.read().decode('utf-8'), response.getheader('Server'))

 2、处理整体url

# -*- coding: UTF-8 -*-
from urllib import request, error, parse

url = 'https://***.***.com/api?city=徐州'
url = parse.quote(url, safe='/:=?')  # urllib处理中文,需要编码

response = request.urlopen(url)
print(response.read().decode('utf-8'), response.getheader('Server'))

五、运行截图

六、其他UnicodeEncodeError: 'ascii' codec 问题

参考:

https://blog.csdn.net/u011331731/article/details/89400702

https://wenku.csdn.net/answer/5txy7qyur8

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/273683.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IDEA2023创建web项目

一、新建项目 点击File->New->Project...,如果是第一次创建项目则单击New Project 二、添加Web Application 建好的样子 把web移动到main目录下同时改名为webapp 三、不存在Add Framework Support添加Web Application 如何存在Add Framework Support&#…

Java - 工厂设计模式

Java - 工厂设计模式 一. 简介二. 例子2.1 定义抽象类2.2 定义子类2.3 创建工厂2.4 测试 三. JDK中使用工厂模式的案例 前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 工厂设计模式…

分享11 种有用的 JavaScript 技巧

今天这篇文章,我想与你分享 11个有用的JavaScript实用小技巧,它们将极大地提高你的工作效率。 1.生成随机颜色的两种方式 1).生成RandomHexColor const generateRandomHexColor () > {return #${Math.floor(Math.random() * 0xffffff)…

keras 人工智能之VGGNet神经网络的图片识别

VGG16结构图 上期文章我们分享了如何使用VGGNet CNN网络结构搭建一个图片识别网络,以及训练了神经网络模型,利用上期训练好的神经模型,可以进行我们的图片识别 图片识别结果 导入第三方库 from keras.preprocessing.image import img_to_array from keras.models import …

关于工业环网交换机的应用知识,你了解多少?

我将与大家分享关于环网交换机的应用知识。环网交换机是一种用于环网交换的交换机设备。从它的名字来看,可以推断出它具备环形网络的功能。工业环网交换机是一种专门用于工业领域的特殊交换机。它具有冗余性和可靠性等优点。 因此,许多工业通信领域开始…

Python——yolov8识别车牌2.0

目录 一、前言 二、关于项目UI 2.1、修改界面内容的文本 2.2、修改界面的图标和图片 三、项目修改地方 四、其他配置问题 一、前言 因为后续有许多兄弟说摄像头卡顿,我在之前那个MATS上面改一下就可以了,MAST项目:基于YOLOv8的多端车流检…

短视频矩阵系统:赋予用户创造与分享的力量

在如今快节奏的社交网络时代,人们对于信息获取和娱乐方式的需求也逐渐发生了变化。作为当下最受欢迎的短视频平台之一,抖音短视频矩阵系统正以其独特的魅力和吸引力,深深地打动着亿万用户。 抖音短视频矩阵系统是一种基于移动端的短视频分享…

【C Primer Plus第六版 学习笔记】第十四章 结构和其他数据形式

有基础,进阶用,个人查漏补缺 建立结构声明:描述该对象由什么组成,即结构布局 格式: 关键字 标记(可选){结构 }; 举例: struct book{char title[2];char author[4];float …

保护电脑安全,火绒安全助手 V5.0

火绒安全软件,也称为“火绒安全助手”是一款由中国研发的综合安全软件。火绒安全软件旨在为计算机用户提供全面的安全保护,包括防病毒、反恶意软件、网络安全、系统优化等功能。 火绒安全的功能 病毒防护:火绒提供实时的病毒和恶意软件扫描…

年度征文|回顾2023我的CSDN

一年转眼而逝,回顾这一年在csdn的创作,学习,记录历程。回顾过去,才能展望未来,首先看图说话。 今年在csdn的访问量已由年初的2万到年末的50w。粉丝有年初的300个左右,增加到4000个左右。我年初的目标是粉丝…

nvm安装版本后设置默认镜像地址和nvm list available出现空白解决办法

如题 npm config get registry https://registry.npmjs.org/发现镜像地址依旧是默认的 解决 运行输入npm config list 查看这个选项对应的目录 修改为的内容如下 homehttps://npmmirror.com registryhttps://registry.npmmirror.com/或者也可以 homehttps://npmmirror.com…

【nw.js】使用nw.js将html页面打包成exe免安装程序

文章目录 一、批处理zip命令(已有可跳过此步骤)二、nw.js包三、使用批处理命令打包成exe可执行文件四、使用EnigmaVB打包成免安装可独立运行的exe文件五、结束 一、批处理zip命令(已有可跳过此步骤) 下载zip,你可以到该…

【Java并发篇】什么是多线程中的上下文切换?

多线程中的上下文切换 ✔️ 简述✔️拓展知识仓✔️减少上下文切换 ✔️ 简述 上下文切换是指 CPU 从一个线程转到另一个线程时,需要保存当前线程的上下文状态,恢复另一个线程的上下文状态,以便于下一次恢复执行该线程时能够正确地运行。 在…

嵌入式面试准备

题目都摘于网上 嵌入式系统中经常要用到无限循环,如何用C编写死循环 while(1){}或者for(;😉 内存分区 代码区,全局区(全局变量,静态变量,以及常量),栈区,堆区 const关键…

[SWPUCTF 2021 新生赛]sql

[SWPUCTF 2021 新生赛]sql wp 输入 1 正常回显: ?wllm1 返回: Want Me? Cross the Waf Your Login name:xxx Your Password:yyy输入单引号引发报错: ?wllm1 返回: Want Me? Cross the Waf You have an error in your SQL s…

指点云 宁波大带宽大存储云服务器 性能评测

指点云 浙江宁波 云服务器 性能测评,2核4G 100兆带宽 240G存储 5G防御 仅需76.8元/月;4核8G仅需112.8元/月。 官网地址:https://url.vpszj.cn/zhidianyun 优惠注册地址:https://url.vpszj.cn/zhidianyun_r 性价比高的服务器推荐…

【产品设计】零代码核心模块之三:报表

报表的用于数据和信息呈现的一种方式,能够帮助人们更直观地了解数据和信息,从而做出更明智的决策。本文从报表的价值、产品功能以及数据统计分析出发,探讨报表的重要性与使用场景,希望对你有所启发。 报表适用于需要呈现数据或信息…

Spring高手之路-Spring支持的注入方式、Spring为什么不建议使用基于字段的依赖注入

目录 Spring支持的注入方式 1.字段注入 2.构造器注入 3.setter注入 使用构造器注入存在的问题 Spring为何不建议使用基于字段的依赖注入 1.单一职责问题 2.可能产生NPE(空指针异常) 3.隐藏依赖 4.不利于测试 Spring支持的注入方式 1.字段注入 A…

k8s的二进制部署: 源码包部署-----node节点部署

服务器IP软件包k8s--master0120.0.0.61kube-aplserver,kube-controer-manager,kube-scheduler,etcdk8s--master0220.0.0.62kube-controer-manager,kube-schedulernode节点0120.0.0.62kubelet,kube-proxy,et…

【http】HTTP/1.0、HTTP/1.1和HTTP/2.0

✨ 专栏介绍 在当今互联网时代,计算机网络已经成为了人们生活和工作中不可或缺的一部分。而要实现计算机之间的通信和数据传输,就需要依靠各种网络协议来进行规范和约束。无论是浏览网页、发送电子邮件还是进行在线交流,都离不开各种各样的网…