Ubuntu下 PhpStorm 编码问题排查与修复
一 快速定位与修复步骤
- 在 PhpStorm 中打开乱码文件,右键文件标签或内容空白处,进入 File Encoding,先执行Reload in Another Encoding(如 GBK/GB2312/GB18030)以正确显示,再选择Convert and Save转为 UTF-8。
- 打开设置:File > Settings > Editor > File Encodings,将以下项统一为 UTF-8:
- Global Encoding
- Project Encoding
- Default encoding for properties files
- 勾选 Transparent native-to-ascii conversion(用于 .properties 文件中文转义)。
- 若界面或日志中文仍显示方块/乱码,检查字体:File > Settings > Editor > Font,选择支持中文的字体(如 Noto Sans CJK SC、Source Han Sans SC、Microsoft YaHei)。
- 完成后重启 PhpStorm 并重新打开项目验证。
二 单个文件或老项目编码不一致的处理
- 在 PhpStorm 中对问题文件使用重新加载为指定编码与转换为 UTF-8 并保存,确保工作副本与版本库一致。
- 批量或服务器上可用命令行转换(先备份):
- 转换示例:
iconv -f GBK -t UTF-8 old.php > new.php
- 忽略无法转换字符:
iconv -f GBK -t UTF-8//IGNORE old.php -o old.php
- 探测未知编码:
enca -L zh_CN filename 或 file -i filename
- 转换后用
git status 检查变更,提交前确认文件内容与预期一致。
三 Ubuntu 系统与终端环境的检查
- 确认系统语言环境为 UTF-8:
- 查看:
locale
- 临时设置:
export LANG=en_US.UTF-8 && export LC_ALL=en_US.UTF-8
- 永久生效:写入
~/.bashrc 或 /etc/default/locale 后执行 source ~/.bashrc
- 若通过终端启动 PhpStorm,确保终端本身使用 UTF-8,避免继承错误 locale。
四 全链路一致性与常见坑
- 全链路统一为 UTF-8:
- 文件保存为 UTF-8(无 BOM)
- 输出层设置:PHP 文件内
header('Content-Type: text/html; charset=utf-8');;HTML 模板使用 <meta charset="UTF-8">
- 数据库/表/连接:统一 utf8mb4(排序规则如 utf8mb4_unicode_ci),连接参数指定 charset=utf8mb4
- 老项目从 GBK/GB2312 迁移时,优先用 PhpStorm 或
iconv 批量转为 UTF-8,再逐步回归测试,避免混合编码导致持续乱码。