PHP开发中常见的乱码问题通常由以下原因导致:
// 设置脚本内部编码
header('Content-Type:text/html;charset=utf-8');
mb_internal_encoding('UTF-8');
// MySQL连接示例
$conn = new mysqli($host, $user, $pass, $db);
$conn->set_charset('utf8mb4');
// PDO连接示例
$pdo = new PDO($dsn, $user, $pass, [
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4'
]);
使用iconv函数转换字符串编码:
$converted = iconv('GBK', 'UTF-8//IGNORE', $str);
// 使用mb_detect_encoding检测编码
$encoding = mb_detect_encoding($str, ['UTF-8', 'GBK', 'BIG5']);
// 在接收表单数据前设置
if($_SERVER['REQUEST_METHOD'] == 'POST') {
mb_convert_variables('UTF-8', 'auto', $_POST);
}
header('Content-Type: application/json;charset=utf-8');
echo json_encode($data, JSON_UNESCAPED_UNICODE);
// 读取文件时指定编码
$content = file_get_contents('file.txt');
$utf8Content = mb_convert_encoding($content, 'UTF-8', 'GBK');
$headers = "Content-Type: text/html; charset=utf-8\r\n";
mail($to, $subject, $message, $headers);