You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python UTF-8解码异常:输出问号菱形字符问题排查

解码后出现菱形问号的原因及解决方法

以下是可能的原因和对应的解决步骤:

1. 终端/控制台编码不匹配

Windows默认的cmd、PowerShell终端编码多为GBK(cp936),而你解码后的字符串是UTF-8编码的字符,终端用GBK解析时会因编码不兼容显示菱形问号。

  • 验证方式:在Python中执行以下代码,查看输出编码:

    import sys
    print(sys.stdout.encoding)
    

    若输出为cp936或GBK,即可确认是该问题。

  • 解决方法:

    • 临时修复:在脚本开头添加代码强制stdout使用UTF-8输出:
      import sys
      sys.stdout.reconfigure(encoding='utf-8')
      
    • 永久修复:在PowerShell中执行chcp 65001切换到UTF-8;或通过Windows设置→区域→管理→更改系统区域设置,勾选「Beta版:使用Unicode UTF-8提供全球语言支持」,重启系统后生效。

2. VSCode终端输出编码设置错误

即使文件编码设为UTF-8,VSCode的终端输出面板可能单独配置了编码:

  • 打开VSCode设置,搜索terminal.integrated.encoding,确保其值为utf-8。

3. 解码时使用了错误的编码

确认解码代码是否指定了正确的UTF-8编码,避免误写为GBK等其他编码。正确的解码代码应为:

b'r\xc3\xa9sum\xc3\xa9'.decode('utf-8')
# 或省略编码参数(Python 3默认使用UTF-8)
b'r\xc3\xa9sum\xc3\xa9'.decode()

4. BeautifulSoup解析编码偏差

如果解码操作和BeautifulSoup解析HTML相关,需确保解析时指定正确编码:

from bs4 import BeautifulSoup
# 显式指定UTF-8编码解析
soup = BeautifulSoup(html_content, 'html.parser', from_encoding='utf-8')

让BS4以UTF-8解析内容,避免自动识别编码出错导致乱码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 22:42:44