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

2023-12-28 17:52

本文主要是介绍处理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, parsecity = '徐州'
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, parsecity = '徐州'
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, parseurl = '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

这篇关于处理urllib.request.urlopen报错UnicodeEncodeError:‘ascii‘的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/546771

相关文章

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

Python安装时常见报错以及解决方案

《Python安装时常见报错以及解决方案》:本文主要介绍在安装Python、配置环境变量、使用pip以及运行Python脚本时常见的错误及其解决方案,文中介绍的非常详细,需要的朋友可以参考下... 目录一、安装 python 时常见报错及解决方案(一)安装包下载失败(二)权限不足二、配置环境变量时常见报错及

使用C++将处理后的信号保存为PNG和TIFF格式

《使用C++将处理后的信号保存为PNG和TIFF格式》在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示,C++提供了多种库来处理图像数据,本文将介绍如何使用stb_ima... 目录1. PNG格式保存使用stb_imagephp_write库1.1 安装和包含库1.2 代码解

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

MySQL报错sql_mode=only_full_group_by的问题解决

《MySQL报错sql_mode=only_full_group_by的问题解决》本文主要介绍了MySQL报错sql_mode=only_full_group_by的问题解决,文中通过示例代码介绍的非... 目录报错信息DataGrip 报错还原Navicat 报错还原报错原因解决方案查看当前 sql mo

Spring Boot 整合 ShedLock 处理定时任务重复执行的问题小结

《SpringBoot整合ShedLock处理定时任务重复执行的问题小结》ShedLock是解决分布式系统中定时任务重复执行问题的Java库,通过在数据库中加锁,确保只有一个节点在指定时间执行... 目录前言什么是 ShedLock?ShedLock 的工作原理:定时任务重复执行China编程的问题使用 Shed

Redis如何使用zset处理排行榜和计数问题

《Redis如何使用zset处理排行榜和计数问题》Redis的ZSET数据结构非常适合处理排行榜和计数问题,它可以在高并发的点赞业务中高效地管理点赞的排名,并且由于ZSET的排序特性,可以轻松实现根据... 目录Redis使用zset处理排行榜和计数业务逻辑ZSET 数据结构优化高并发的点赞操作ZSET 结

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时