远程桌面中文乱码需同步修复三方面:一、配置locale为zh_cn.utf-8并生成;二、安装中文字体(如wqy-microhei)并执行sudo fc-cache -fv刷新缓存;三、修改xrdp的xrdp.ini和startwm.sh,添加font_name及lang/lc_all导出,最后重启xrdp服务。

远程桌面连接后中文显示为方块、问号或“日本語”等乱码字符,说明远程端系统未正确加载中文字体或未启用对应语言环境,必须从字体安装、locale配置、远程协议三方面同步修复。
检查并修正Linux服务器语言环境
先确认当前locale是否支持中文:执行 locale 命令,若输出中 LANG 显示为空、en_US.UTF-8 或其他非中文UTF-8值,需立即修正。
执行以下命令生成中文UTF-8环境:
sudo locale-gen zh_CN.UTF-8
sudo update-locale LANG=zh_CN.UTF-8
编辑 /etc/default/locale,确保内容为 LANG="zh_CN.UTF-8";这一步不执行会导致后续所有字体设置无效,因为系统底层不承认中文编码上下文。
最后运行 source /etc/default/locale 立即生效。
安装并刷新中文字体库
方法一(Rocky/Alma/CentOS系):
sudo yum install -y wqy-microhei-fonts wqy-zenhei-fonts cjkuni-ukai-fonts cjkuni-uming-fonts
方法二(Ubuntu/Debian系):
sudo apt install -y fonts-wqy-microhei fonts-wqy-zenhei fonts-noto-cjk
安装完成后必须强制重建字体缓存:sudo fc-cache -fv。漏掉这步会导致X11或RDP会话仍调用旧字体索引,新字体不会被识别。
XRDP远程桌面中文显示修复
第一步:确认XRDP服务已启用中文支持
编辑 /etc/xrdp/xrdp.ini,在 [Globals] 区块下添加或修改:
font_name=Microsoft YaHei
font_size=12
第二步:重启XRDP服务使配置生效
sudo systemctl restart xrdp
第三步:关键操作——替换XRDP默认session脚本
备份原文件:sudo cp /etc/xrdp/startwm.sh /etc/xrdp/startwm.sh.bak
编辑 /etc/xrdp/startwm.sh,在 test -x /etc/X11/Xsession && exec /etc/X11/Xsession 这行前插入:
export LANG=zh_CN.UTF-8export LC_ALL=zh_CN.UTF-8
这一步是XRDP中文显示的核心补丁,否则即使系统locale正确,XRDP启动的会话进程仍继承空环境变量,导致GTK/Qt应用全部fallback到ASCII字体。
Windows客户端连接时的编码匹配
使用Windows自带“远程桌面连接”(mstsc.exe)时,无需额外设置编码——它原生支持UTF-8字形传输。
但若使用旧版客户端(如Windows 7自带RDP 7.0),请在连接前点击“显示选项”→“高级”→勾选【始终重新连接到控制台会话】,避免因会话隔离导致字体资源未加载。
使用第三方RDP客户端(如FreeRDP、Remmina)时,务必在连接参数中显式指定:/u:用户名 /p:密码 /fonts /rfx,其中 /fonts 参数强制启用远程字体下载功能。











