处理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

相关文章

详解如何在SpringBoot控制器中处理用户数据

《详解如何在SpringBoot控制器中处理用户数据》在SpringBoot应用开发中,控制器(Controller)扮演着至关重要的角色,它负责接收用户请求、处理数据并返回响应,本文将深入浅出地讲解... 目录一、获取请求参数1.1 获取查询参数1.2 获取路径参数二、处理表单提交2.1 处理表单数据三、

Spring Boot Controller处理HTTP请求体的方法

《SpringBootController处理HTTP请求体的方法》SpringBoot提供了强大的机制来处理不同Content-Type​的HTTP请求体,这主要依赖于HttpMessageCo... 目录一、核心机制:HttpMessageConverter​二、按Content-Type​处理详解1.

idea报错java: 非法字符: ‘\ufeff‘的解决步骤以及说明

《idea报错java:非法字符:‘ufeff‘的解决步骤以及说明》:本文主要介绍idea报错java:非法字符:ufeff的解决步骤以及说明,文章详细解释了为什么在Java中会出现uf... 目录BOM是什么?1. BOM的作用2. 为什么会出现 \ufeff 错误?3. 如何解决 \ufeff 问题?最

解决Maven项目报错:failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0的问题

《解决Maven项目报错:failedtoexecutegoalorg.apache.maven.plugins:maven-compiler-plugin:3.13.0的问题》这篇文章主要介... 目录Maven项目报错:failed to execute goal org.apache.maven.pl

一文带你搞懂Redis Stream的6种消息处理模式

《一文带你搞懂RedisStream的6种消息处理模式》Redis5.0版本引入的Stream数据类型,为Redis生态带来了强大而灵活的消息队列功能,本文将为大家详细介绍RedisStream的6... 目录1. 简单消费模式(Simple Consumption)基本概念核心命令实现示例使用场景优缺点2

电脑找不到mfc90u.dll文件怎么办? 系统报错mfc90u.dll丢失修复的5种方案

《电脑找不到mfc90u.dll文件怎么办?系统报错mfc90u.dll丢失修复的5种方案》在我们日常使用电脑的过程中,可能会遇到一些软件或系统错误,其中之一就是mfc90u.dll丢失,那么,mf... 在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包

电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案

《电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案》最近有不少兄弟反映,电脑突然弹出“mfc100u.dll已加载,但找不到入口点”的错误提示,导致一些程序无法正... 在计算机使用过程中,我们经常会遇到一些错误提示,其中最常见的就是“找不到指定的模块”或“缺少某个DL

解决IDEA报错:编码GBK的不可映射字符问题

《解决IDEA报错:编码GBK的不可映射字符问题》:本文主要介绍解决IDEA报错:编码GBK的不可映射字符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录IDEA报错:编码GBK的不可映射字符终端软件问题描述原因分析解决方案方法1:将命令改为方法2:右下jav

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

MyBatis模糊查询报错:ParserException: not supported.pos 问题解决

《MyBatis模糊查询报错:ParserException:notsupported.pos问题解决》本文主要介绍了MyBatis模糊查询报错:ParserException:notsuppo... 目录问题描述问题根源错误SQL解析逻辑深层原因分析三种解决方案方案一:使用CONCAT函数(推荐)方案二: