python问题解决----把\xe6\xa8\xa1\这种字符转为普通汉字?

本文通过实例演示了如何使用Python的requests库获取网页内容,并针对获取内容出现中文乱码的问题给出了简单有效的解决方案。
部署运行你感兴趣的模型镜像

1、问题回放:
打开python脚本,敲入下面的命令语句,发现一切正常

>>> import requests
>>> respose = requests.get('https://foofish.net')
>>> respose.status_code
200
>>> respose.reason
'OK'
>>> for name,value in respose.headers.items():
    print('%s:%s' %(name,value))


Server:nginx/1.10.2
Date:Thu, 28 Sep 2017 02:48:42 GMT
Content-Type:text/html
Last-Modified:Wed, 27 Sep 2017 09:59:29 GMT
Transfer-Encoding:chunked
Connection:keep-alive
Vary:Accept-Encoding
ETag:W/"59cb7681-283c"
Strict-Transport-Security:max-age=15768000
Content-Encoding:gzip
>>> respose.content
<!DOCTYPE html>\n<html lang="zh-cmn-hans">\n。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。<li><a href="http://weibo.com/lzjun567" target="_blank">\xe5\xbe\xae\xe5\x8d\x9a</a></li>\n                            。。。。</html>

当我用respose.content 输出请求的内容时,发现中文全部变成了这样。。。。什么鬼,太不友好吧

然后:

>>> respose.content.decode('utf-8')

恩,将上面的内容加上编码格式,问题解决了,当然还有其他的解决方法,如果你看到了,欢迎留言告知,谢谢,共同进步

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

Python 中将字符换为 UTF-8 编码是一个常见需求,特别是在处理非 UTF-8 编码的文件、网络请求或数据流时。Python 提供了多种方式来确保字符串以 UTF-8 编码形式处理或输出。 ### 字符串编码与解码 Python 中的字符串类型 `str` 是 Unicode 字符串(UTF-16 或 UTF-32,具体取决于 Python 构建版本),而字节类型 `bytes` 是原始字节序列。因此,将字符换为 UTF-8 编码的过程是将 `str` 类型编码为 `bytes` 类型。 ```python text = "你好,世界" utf8_bytes = text.encode('utf-8') print(utf8_bytes) # 输出: b'\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x8c\xe4\xb8\x96\xe7\x95\x8c' ``` 如果原始数据是以其他编码格式存储的字节(如 `gbk`、`latin-1` 等),则需要先解码为 Unicode 字符串,再重新编码为 UTF-8: ```python original_bytes = b'\xc4\xe3\xba\xc3' # GBK 编码的 "你好" text = original_bytes.decode('gbk') # 解码为 Unicode utf8_bytes = text.encode('utf-8') # 编码为 UTF-8 print(utf8_bytes) # 输出: b'\xe4\xbd\xa0\xe5\xa5\xbd' ``` ### 文件读写中的 UTF-8 编码 在处理文件时,建议在打开文件时直接指定编码为 UTF-8,以确保读取和写入的内容均为 UTF-8 编码: ```python with open('example.txt', 'r', encoding='utf-8') as f: content = f.read() print(content) with open('output.txt', 'w', encoding='utf-8') as f: f.write("你好,UTF-8") ``` 若文件原始编码不是 UTF-8,则需在读取时指定正确的编码格式,再通过 `encode` 和 `decode` 方法换为 UTF-8。 ### 控制台输出与编码设置 在某些系统(尤其是 Windows)中,控制台默认使用的编码可能不是 UTF-8,这会导致打印 Unicode 字符时出现乱码。可以通过以下方式确保输出使用 UTF-8 编码: - 设置环境变量 `PYTHONIOENCODING="utf-8"`,强制 Python 使用 UTF-8 进行标准输入/输出。 - 使用 `io.TextIOWrapper` 包装 `sys.stdout` 以指定编码: ```python import io import sys sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') print("你好,世界") ``` ### 网络请求与 UTF-8 编码 在处理 HTTP 请求或响应时,通常需要确保内容以 UTF-8 编码传输: ```python import requests response = requests.get('https://example.com') response.encoding = 'utf-8' # 显式指定编码为 UTF-8 print(response.text) ``` 在发送 POST 请求时,若数据为 Unicode 字符串,`requests` 库会自动将其编码为 UTF-8: ```python data = {"text": "你好,世界"} response = requests.post('https://example.com/api', data=data) ``` ### 数据库交互中的 UTF-8 编码 在与数据库交互时,建议在连接参数中指定字符集为 UTF-8。例如,使用 `pymysql` 连接 MySQL 数据库: ```python import pymysql conn = pymysql.connect( host='localhost', user='root', password='password', database='test', charset='utf8mb4' ) ``` 使用 `utf8mb4` 而非 `utf8` 可确保支持完整的 Unicode 字符集(包括表情符号)。 ### 总结 Python 提供了丰富的工具来处理字符编码换,尤其是 UTF-8。无论是字符串处理、文件操作、网络通信还是数据库交互,都应明确指定编码方式以避免乱码问题。UTF-8 几乎成为现代应用的标准编码方式,其兼容性和效率使其成为首选[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值