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

PyInstaller打包后格鲁吉亚字符显示为问号的解决求助

解决PyInstaller打包后格鲁吉亚字符显示为问号的问题

问题核心是Windows 7控制台默认编码和字体不支持格鲁吉亚字符,结合PyInstaller打包后的编码适配问题,可通过以下步骤解决:

1. 强制设置控制台UTF-8编码

在代码开头添加以下代码,直接调用Windows API修改控制台的输入输出编码为UTF-8(代码页65001):

import ctypes
# 设置控制台输出编码为UTF-8
ctypes.windll.kernel32.SetConsoleOutputCP(65001)
# 设置控制台输入编码为UTF-8
ctypes.windll.kernel32.SetConsoleCP(65001)

2. 重新配置Python标准输出编码

针对Python 3.7及以上版本,可重新配置标准输出的编码,确保字符正确输出:

import sys
if hasattr(sys.stdout, 'reconfigure'):
    sys.stdout.reconfigure(encoding='utf-8')
    sys.stderr.reconfigure(encoding='utf-8')

3. 调整控制台字体(必要时)

即使编码设置正确,Windows 7默认控制台字体可能不支持格鲁吉亚字符,需手动修改:

  • 右键控制台窗口标题栏 → 选择「属性」
  • 切换到「字体」选项卡,选择「Lucida Console」或「Consolas」(这两种字体支持大部分Unicode字符)
  • 点击「确定」保存设置

完整测试代码

将以上配置整合后的完整代码:

import ctypes
import sys

# 设置控制台编码
ctypes.windll.kernel32.SetConsoleOutputCP(65001)
ctypes.windll.kernel32.SetConsoleCP(65001)

# 配置标准输出编码
if hasattr(sys.stdout, 'reconfigure'):
    sys.stdout.reconfigure(encoding='utf-8')
    sys.stderr.reconfigure(encoding='utf-8')

print("აააგგგ")
print(u"აააგგგ")
print('\u10A0\u10A0\u10A0\u10A1\u10A1\u10A1')
stop = input("")

打包命令

使用PyInstaller打包时,直接执行常规打包命令即可:

pyinstaller --onefile your_script_name.py

内容的提问来源于stack exchange,提问作者S. Stashevski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:41:17