2021-08-26 19:36:26
PHP的json_encode()函数默认会将中文字符转换为Unicode转义序列(如u6211),而非直接输出中文字符,这可能导致显示乱码。
解决方法:使用JSON_UNESCAPED_UNICODE选项在调用json_encode()时,添加JSON_UNESCAPED_UNICODE参数,强制直接输出中文字符:
$json = json_encode($data, JSON_UNESCAPED_UNICODE);确保编码一致性
PHP文件编码:保存PHP文件为UTF-8无BOM格式(避免BOM头干扰)。
数据库连接:若数据来自数据库,确保连接字符集为UTF-8(如MySQL的SET NAMES utf8mb4)。
HTTP头设置:在输出JSON前设置正确的Content-Type:header('Content-Type: application/json; charset=utf-8');
前端处理如果JSON被前端JavaScript解析,确保使用JSON.parse()或直接处理响应(现代浏览器会自动处理Unicode转义)。
检查环境配置
确认PHP的default_charset配置为UTF-8(在php.ini中设置)。
避免在中间环节(如日志、文本编辑器)强制转换编码。
通过以上步骤,可确保JSON中的中文正常显示。