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

在Python 3中无法获取Microsoft Edge窗口标题的问题求助

解决win32gui获取Edge窗口标题时的UnicodeEncodeError问题

问题根源是Windows默认控制台编码为GBK,而Edge窗口标题中包含了GBK无法编码的零宽度空格字符(\u200b,肉眼不可见),导致print输出时触发编码错误。以下是几种可行的解决办法:

方法1:修改print输出的编码处理逻辑

直接在输出时指定错误处理方式,忽略或转义无法编码的字符:

import win32gui as w
import time

while True:
    time.sleep(1)
    titleName = w.GetWindowText(w.GetForegroundWindow())
    # 忽略无法编码的字符
    print(titleName.encode('gbk', errors='ignore').decode('gbk'))
    # 或者用转义方式显示特殊字符
    # print(titleName.encode('gbk', errors='backslashreplace').decode('gbk'))

方法2:将控制台编码改为UTF-8

方式A:代码内修改输出编码(Python3.7+支持)

在代码开头添加配置,把stdout的编码设为UTF-8:

import sys
import win32gui as w
import time

sys.stdout.reconfigure(encoding='utf-8')

while True:
    time.sleep(1)
    titleName = w.GetWindowText(w.GetForegroundWindow())
    print(titleName)

方式B:控制台手动切换编码

运行脚本前,在Windows控制台执行以下命令,将编码切换为UTF-8(代码页65001):

chcp 65001

之后再运行你的Python脚本,即可正常输出包含特殊字符的标题。

方法3:提前过滤无法编码的字符

获取标题后,过滤掉GBK编码不支持的字符,只保留常见的中文和ASCII字符:

import win32gui as w
import time
import re

while True:
    time.sleep(1)
    raw_title = w.GetWindowText(w.GetForegroundWindow())
    # 过滤掉非中文、非ASCII的字符
    titleName = re.sub(r'[^\x00-\x7F\u4E00-\u9FFF]', '', raw_title)
    print(titleName)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:15:39