银河麒麟微信wine乱码需先设locale为zh_cn.utf-8,再复制windows字体到~/.wine/drive_c/windows/fonts,注册font-fix.reg映射字体名,最后在winecfg中停用wechatocr.exe。

确认系统语言与区域设置是否正确
银河麒麟默认安装后若未手动切换为中文环境,微信在Wine中启动时会因locale缺失直接 fallback 到ASCII字符集,导致界面和聊天记录全部显示为方框。先执行 locale 命令检查输出中 LANG 和 LC_ALL 是否均为 zh_CN.UTF-8。如果不是,需编辑 /etc/default/locale,写入两行:
LANG=zh_CN.UTF-8
LC_ALL=zh_CN.UTF-8
保存后运行 sudo locale-gen zh_CN.UTF-8 && sudo update-locale 生效。
把Windows字体复制进Wine容器Fonts目录
这一步不能跳过:银河麒麟自带的Wine prefix(默认位于 ~/.wine)中没有宋体、微软雅黑等核心中文字体,微信渲染消息气泡、菜单栏、输入框时会找不到字形,强制用方框占位。从一台Windows电脑拷贝 C:\Windows\Fonts\ 下全部文件(至少包含 simsun.ttc、msyh.ttc、arial.ttf),解压到 Linux 本地临时目录,再执行:
mkdir -p ~/.wine/drive_c/windows/Fontscp ~/Downloads/windows-fonts/* ~/.wine/drive_c/windows/Fonts/
注意:必须用 ~/.wine 路径,不是 ~/.deepinwine 或其他路径——银河麒麟桌面版默认使用标准Wine而非deepin-wine分支,走错目录等于白操作。
注册字体映射表,让微信认出中文字体
光放字体文件进去还不够。Wine需要知道“当程序请求‘SimSun’时,该调用哪个实际文件”。否则微信仍会按名字去查,查不到就继续打方框。创建一个注册表文件 font-fix.reg,内容如下:
REGEDIT4
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]
"Arial"="simsun"
"Courier New"="simsun"
"MS Shell Dlg"="simsun"
"MS Shell Dlg 2"="simsun"
"Tahoma"="simsun"
"Times New Roman"="simsun"
"System"="simsun"
保存后,在终端执行:wine regedit font-fix.reg。这步操作会写入Wine注册表,覆盖默认字体回退逻辑。如果跳过此步,即使字体文件全在,微信依然可能显示乱码。
禁用wechatocr.exe防止OCR模块崩溃干扰字体加载
银河麒麟上运行微信时,常伴随“wechatocr.exe 遇到严重问题”弹窗,该模块崩溃会中断主进程初始化流程,导致字体子系统未能完整加载。打开 winecfg → 切换到“函数库”选项卡 → 在“新增函数库顶替”栏输入 wechatocr.exe → 点击“添加” → 选中它 → 点击“编辑” → 将下拉菜单改为“停用”。这一步不是可选优化,而是必须前置操作——否则微信根本无法稳定进入主界面,更谈不上验证字体是否生效。











