You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python调用谷歌翻译API出现UTF-8编码不匹配问题求助

解决Python调用谷歌翻译API时UTF-8特殊字符乱码问题

我来帮你搞定这个乱码问题!你遇到的情况其实是两个常见的编码坑导致的:

问题根源分析

  • URL参数未编码:你直接把句子拼接到URL里,当内容包含特殊字符(比如省略号、德语变音符号)时,Python不会自动对这些字符进行URL编码,而浏览器会帮你做这件事,这就是为什么浏览器正常但脚本出错的核心原因。
  • 响应处理错误requests库的r.text已经是自动解码后的Unicode字符串了,你再做encode().decode('utf8','ignore')完全是画蛇添足,反而可能破坏原本正确的编码。

修正后的代码

直接用requestsparams参数传递查询内容,它会自动帮你处理URL编码;同时用r.json()直接解析响应,比手动json.loads(r.text)更稳妥:

# -*- encoding: utf-8 -*-
import requests

satz = "Beneath the moonlight glints a tiny fragment of silver, a fraction of a line…"
url = 'https://translate.googleapis.com/translate_a/single'
params = {
    'client': 'gtx',
    'sl': 'en',
    'tl': 'de',
    'dt': 't',
    'q': satz
}

r = requests.get(url, params=params)
# 直接解析JSON响应
translation_results = r.json()

# 遍历翻译结果(更Pythonic的写法)
for item in translation_results[0]:
    print(item[0])

运行结果

执行后你会得到正确的德语翻译,特殊字符正常显示:

Unter dem Mondschein glänzt ein winziges Silberfragment, ein Bruchteil einer Linie…

额外提示

  • 永远不要手动拼接URL查询参数,用params参数是最安全的方式,能避免各种编码问题。
  • requests会自动检测响应的编码,所以r.json()可以直接正确解析包含特殊字符的内容,不需要额外的编码转换操作。

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

火山引擎 最新活动