在 Debian 上运行 Flutter 应用出现乱码,通常不是 Flutter 本身的问题,而是系统字体缺失或语言环境(locale)配置不正确导致的。下面按常见原因逐步解决。
locale
如果看到:
LANG=C
LC_ALL=C
或者包含 POSIX,就很可能乱码。
sudo dpkg-reconfigure locales
或手动:
sudo apt install locales
sudo locale-gen zh_CN.UTF-8
sudo update-locale LANG=zh_CN.UTF-8
locale
应为:
LANG=zh_CN.UTF-8
LC_ALL=zh_CN.UTF-8
⚠️ 修改后重新登录或重启
Flutter 在 Linux 上默认使用系统字体,如果系统没有中文字体,就会方块或乱码。
sudo apt install fonts-noto-cjk
sudo apt install fonts-wqy-zenhei
sudo apt install fonts-wqy-microhei
安装后刷新字体缓存:
fc-cache -fv
fc-list :lang=zh
即使系统有字体,也建议显式配置,避免依赖系统默认。
例如 Noto Sans CJK:
fonts/NotoSansCJK-Regular.otf
pubspec.yamlflutter:
fonts:
- family: NotoSansCJK
fonts:
- asset: fonts/NotoSansCJK-Regular.otf
Text(
'中文测试',
style: TextStyle(
fontFamily: 'NotoSansCJK',
),
)
如果你用的是 Flutter Linux 桌面应用:
sudo apt install fonts-freefont-ttf
export LANG=zh_CN.UTF-8
flutter run
如果是 终端输出乱码:
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
并确保终端编码为 UTF-8。
locale 是 zh_CN.UTF-8fonts-noto-cjk如果你能补充说明:
我可以给你更精确的解决方案。