Python如何将包含Unicode码点的字符串转换回正常字符
Unicode转义序列还原为原始中文字符的解决方案
根因说明
该情况本质是写入或读取环节编码不匹配,或是原始响应内容本身包含Unicode转义序列,导致中文字符被转为\u开头的码点序列存储。以下是两种可行解决路径:
方案1:直接处理现有带转义的字符串
对读取到的转义字符串,先用utf-8编码,再用unicode_escape解码即可还原原始字符,示例代码如下:
with open("file.txt", "r") as filename: mystring = filename.readline() # 解码Unicode转义序列 original_str = mystring.encode('utf-8').decode('unicode_escape') print(original_str)
运行后输出结果为:送分200000
方案2:从写入环节规避转义问题
要从根源避免该问题,可在请求和写入文件时明确指定编码,步骤如下:
- 请求后先自动识别响应的正确编码,避免requests默认编码识别错误
- 读写文件时明确指定
utf-8编码,避免系统默认编码导致的转义
写入代码示例
import requests url = "你的目标请求地址" r = requests.get(url) # 自动匹配正确的响应编码 r.encoding = r.apparent_encoding # 写入时指定utf-8编码 with open("file.txt","w", encoding="utf-8") as filename: filename.write(r.text)
读取代码示例
with open("file.txt", "r", encoding="utf-8") as filename: mystring = filename.readline() print(mystring)
该方案写入的文件不会产生额外的Unicode转义,读取后可直接得到原始中文字符。
内容的提问来源于stack exchange,提问作者dsbap
相关产品推荐
相关产品推荐

