PHP 怎么PHP 编码设置

wen PHP项目 1

本文目录导读:

PHP 怎么PHP 编码设置

  1. PHP 文件本身的编码
  2. PHP 输出编码设置
  3. 数据库连接编码设置
  4. JSON 编码设置
  5. 多字节字符串函数
  6. 完整示例
  7. 常见问题排查

在 PHP 中设置编码(字符集)主要有以下几种常见场景和方法:

PHP 文件本身的编码

保存文件时设置

  • 使用 UTF-8 without BOM(无 BOM 的 UTF-8)
  • 大部分 IDE/编辑器都可以设置:VSCode、PHPStorm、Sublime 等

PHP 输出编码设置

使用 header() 函数

// 设置 HTML 输出为 UTF-8
header('Content-Type: text/html; charset=utf-8');
// 或更完整的写法
header('Content-Type: text/html; charset=utf-8', true);

在 HTML 中设置 meta 标签

echo '<meta charset="utf-8">';
// 或
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">';

修改 php.ini 配置文件

default_charset = "utf-8"

数据库连接编码设置

MySQLi 示例

$mysqli = new mysqli("localhost", "user", "password", "database");
$mysqli->set_charset("utf8mb4"); // 推荐使用 utf8mb4

PDO 示例

$pdo = new PDO("mysql:host=localhost;dbname=database;charset=utf8mb4", "user", "password");
// 或
$pdo->exec("SET NAMES 'utf8mb4'");

JSON 编码设置

// 确保 JSON 输出 UTF-8
header('Content-Type: application/json; charset=utf-8');
echo json_encode($data, JSON_UNESCAPED_UNICODE); // 避免中文被转义

多字节字符串函数

使用 mb_* 系列函数处理多字节编码:

mb_internal_encoding("UTF-8"); // 设置内部编码
mb_http_output("UTF-8");       // 设置 HTTP 输出编码

完整示例

<?php
// 1. 设置 PHP 内部编码
mb_internal_encoding("UTF-8");
// 2. 设置 HTTP 头部
header('Content-Type: text/html; charset=utf-8');
// 3. 数据库连接
$db = new mysqli("localhost", "user", "pass", "dbname");
$db->set_charset("utf8mb4");
// 4. 输出内容
echo "中文测试";
?>

常见问题排查

如果出现乱码,请检查:

  1. 文件编码:PHP 文件是否保存为 UTF-8
  2. HTML 声明:是否设置了 charset
  3. 数据库:数据库、表、字段编码是否统一
  4. HTTP 头:是否有冲突的编码声明
  5. BOM 头:避免使用带 BOM 的 UTF-8

选择 UTF-8(尤其是 utf8mb4)作为统一的编码方案,可以解决大部分编码问题。

抱歉,评论功能暂时关闭!