解决PHP乱码问题需从字符编码、数据库配置、文件处理等多方面入手,具体方法如下:
一、设置HTTP头部与页面编码
在PHP文件开头添加以下代码,确保浏览器以UTF-8接收内容:
```php
header('Content-Type: text/html; charset=utf-8');
```
同时,在HTML页面的`
`标签中添加:```html
``` 二、数据库编码设置 ```sql CREATE DATAbase my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 连接数据库时设置编码 ```php mysqli_set_charset($conn, 'utf8mb4'); ``` 表/字段编码转换 使用`CONVERT`函数调整现有表或字段编码: ```sql ALTER TABLE table_name ConVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 三、文件编码与服务器配置 修改PHP文件编码 将文件转换为UTF-8,可使用文本编辑器或命令行工具(如`iconv`)。 服务器配置 - Apache:在`.htaccess`中添加`AddDefaultCharset UTF-8`。 - Nginx:在配置文件中设置`charset utf-8`。 四、字符串处理与输出过滤 使用mbstring函数 转换字符串编码: ```php $string = mb_convert_encoding($string, 'UTF-8', 'auto'); ``` 过滤特殊字符 使用`htmlspecialchars`防止XSS: ```php echo htmlspecialchars($str, ENT_QUOTES, 'UTF-8'); ``` 五、处理表单提交数据 接收数据时转换为UTF-8: ```php $form_data = mb_convert_encoding($_POST['data'], 'UTF-8', 'auto'); ``` 六、检查文件名乱码 通过PHP重命名文件: ```php $file_name = mb_convert_encoding($file, "UTF-8", "Auto"); rename($dir.$old_name, $dir.$file_name); ``` 总结: 优先通过HTTP头部、数据库连接和文件编码统一设置,结合`mbstring`和`iconv`函数处理字符串,确保服务器与客户端编码一致。若问题仍未解决,需检查服务器配置文件或数据库表结构。数据库创建时指定编码