php 字符串编码转换核心是用 mb_convert_encoding 可靠互转,辅以 mb_detect_encoding 探测、iconv 轻量转换及 mb_check_encoding 验证,确保 utf- 8 等编码间正确转换不乱码。

PHP 中字符串 编码 转换的核心是确保不同编码格式(如 UTF-8、GBK、GB2312、ISO-8859-1 等)之间能正确互转,避免乱码。关键不在于“自研算法”,而在于合理使用内置函数并理解编码原理。
用 mb_convert_encoding 实现可靠转换
这是最推荐的方式,支持多字节字符,兼容性好,且能自动识别源编码(需谨慎)。
- 基本语法:
mb_convert_encoding($string, $to_encoding, $from_encoding) - 常见用法:
mb_convert_encoding($str, 'UTF-8', 'GBK')—— 将 GBK 字符串转为 UTF-8mb_convert_encoding($str, 'GBK', 'UTF-8')—— 反向转换 - 若不确定源编码,可先用
mb_detect_encoding($str, ['UTF-8','GBK','BIG5'], true)探测,但该函数不绝对可靠,建议结合业务场景明确指定源编码
用 iconv 进行轻量级转换
底层更高效,但对非法字节处理较严格,默认遇到无法转换的字符会报错。
- 基础调用:
iconv('GBK', 'UTF-8//IGNORE', $str)
其中//IGNORE表示跳过无法转换的字符,//TRANSLIT可尝试音近替换(如将 é → e) - 注意:PHP 8.2+ 已废弃
iconv扩展(但仍可用),建议新项目优先用mbstring - 检查是否启用:
extension_loaded('iconv')或function_exists('iconv')
处理 HTTP 请求中的编码问题
表单提交或 URL 参数常含 GBK/GB2312 编码内容,需在接收时及时转换。
立即学习“PHP 免费学习笔记(深入)”;
- 前端页面需声明 charset:
<meta charset="GBK">鎴






























