You need to enable JavaScript to run this app. 如何使用Python将API返回的unicode格式字符串转换为实际UTF-8字符串?
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python将API返回的unicode格式字符串转换为实际UTF-8字符串?

Python 转换字面存储的Unicode转义字符串方案

你遇到的场景本质为:获取到的字符串是字面意义上的\uXXXX序列(即字符串中连续存储了\、u、四位十六进制数,并非Python解释器解析转义后的实际字符),直接用常规编码无法得到正确结果,可根据实际场景选择以下可靠处理方式:

分场景处理方法

  • 通用场景:使用unicode_escape规则解析
    该方式适配绝大多数纯ASCII的转义字符串场景,通过编码+解码的两步操作即可完成转换:

    # 对应描述的原始字符串:索引1位置的字符为'u'
    raw_str = r"\u092f\u0939 \u0909\u0926\u093e\u0939\u0930\u0923 \u092a\u093e\u0920"
    converted_str = raw_str.encode('utf-8').decode('unicode_escape')
    # 最终输出为印地语原文:यह उदाहरण पाठ
    print(converted_str)
    

    注意:该方法会按规则解析所有转义序列,若原始字符串中存在非转义用途的反斜杠,需要提前做转义处理,避免误解析。

  • 带引号包裹的字符串场景:使用ast.literal_eval解析
    如果拿到的原始字符串本身是被引号包裹的Python字符串字面量格式(例如"'\u092f\u0939'"),用该方法解析更安全,不存在任意代码执行风险:

    import ast
    raw_str = r"'\u092f\u0939 \u0909\u0926\u093e\u0939\u0930\u0923 \u092a\u093e\u0920'"
    converted_str = ast.literal_eval(raw_str)
    

    相比手动编写正则替换转义序列的方案,该方法可兼容所有Python规范的字符串转义格式,可靠性更高。

常见踩坑提醒

  • 不要直接对原始字符串调用encode('unicode_escape'),该操作会把所有字符反向转成\uXXXX形式,和转换目标完全相反
  • 若字符串中混合了其他编码的转义字节,可在解码阶段指定对应编码,避免出现乱码

内容的提问来源于stack exchange,提问作者mangoland

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.29 21:06:05