服务器升级至CentOS9后特殊字符显示异常求助
解决UTF-8字符输出乱码(è显示为è)的问题
以下是针对该字符编码问题的排查与解决步骤:
检查PHP源文件本身的编码
乱码的核心原因之一是PHP文件未以UTF-8(无BOM)格式保存。用以下命令检查文件编码:file -i your_script.php正常输出应包含
charset=utf-8,若显示其他编码(如ISO-8859-1),需将文件转换为UTF-8无BOM格式(可通过VS Code、Notepad++等编辑器完成)。配置PHP-FPM默认输出编码
编辑PHP-FPM的pool配置文件(通常位于/etc/php-fpm.d/www.conf),添加或修改:php_value[default_charset] = "UTF-8"保存后重启PHP-FPM服务:
systemctl restart php-fpm确认Apache的默认字符集配置
在Apache主配置(/etc/httpd/conf/httpd.conf)或虚拟主机配置文件中,确保启用:AddDefaultCharset UTF-8重启Apache生效:
systemctl restart httpd检查mbstring扩展编码设置(若启用)
若服务器启用了mbstring扩展,编辑php.ini文件,设置:mbstring.internal_encoding = UTF-8 mbstring.http_output = UTF-8保存后重启PHP-FPM服务。
补充说明:è显示为è是典型的UTF-8字节被当作ISO-8859-1解析的问题,说明从PHP文件读取到HTTP输出的某个环节编码未统一为UTF-8,以上步骤覆盖了所有关键节点。
内容的提问来源于stack exchange,提问作者DrK
相关产品推荐
相关产品推荐

