php怎么下载安装后设置默认字符集_utf8配置步骤【详解】
技术百科
雪夜
发布时间:2026-01-01
浏览: 次 PHP 默认字符集需在php.ini中设default_charset="UTF-8"并重启服务器;MySQL连接须用utf8mb4(mysqli→set_charset,PDO→DSN加charset=utf8mb4);HTML需meta charset与HTTP头一致;文件保存为UTF-8无BOM。
PHP 安装后如何确认并设置默认字符集为 UTF-8
PHP 本身没有“安装时自动设为 UTF-8”的开关,default_charset 的默认值在不同版本中也不同(PHP 5.6 是 UTF-8,PHP 7.0+ 默认仍是 UTF-8,但很多旧环境或自编译安装可能被覆盖)。关键不是“怎么设”,而是“在哪设、设哪里才真正生效”。
修改 php.ini 中的 default_charset 配置项
这是最直接控制 PHP 输出 HTTP 响应头中 Content-Type 字符集的方式。但它只影响 header("Content-Type: text/html") 类响应,不改变 MySQL 连接、文件读写或内部字符串处理逻辑。
-
default_charset必须写在主php.ini文件中(可通过php --ini或phpinfo()查看加载路径) - 找到这一行:
default_charset = "UTF-8"
,取消注释并确保值是"UTF-8"(带英文双引号,大小写不敏感但建议大写 U 和小写 tf-8) - 如果该行不存在,手动添加在
[PHP]段落下方 - 改完必须重启 Web 服务器(
systemctl restart apache2或service php-fpm restart),仅 reload 不生效
MySQL 连接层也要显式设 UTF-8
即使 default_charset 是 UTF-8,PHP 连接 MySQL 时默认用的是 latin1(尤其老版本 mysqli/pdo),导致 SELECT 出来的中文变乱码。这不是 PHP 字符集问题,而是连接协议层没协商好。
- 使用
mysqli时,连接后立即执行:$mysqli->set_charset('utf8mb4');(注意是utf8mb4,不是utf8) - 使用
PDO时,在 DSN 中加入;charset=utf8mb4:$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8mb4', $user, $pass); - 不推荐依赖
init_commands或SET NAMES,兼容性差且易被忽略
HTML 输出页必须声明 charset,且与 PHP 一致
浏览器按 HTML 中的 或 HTTP Content-Type 头解析页面。两者不一致时,以 HTTP 头为准;若 HTTP 头没带 charset,才 fallback 到 。
- 确保 PHP 输出前没提前输出内容(避免 header 已发送),再调用:
header('Content-Type: text/html; charset=UTF-8'); - 同时在 HTML
中写: - 文件本身保存为 UTF-8 无 BOM 格式(用 VS Code、Notepad++ 等编辑器检查并转换)
最容易被忽略的是:MySQL 的 utf8 实际只支持 BMP 字符(不支持 emoji),必须用 utf8mb4
+ 对应的表/列字符集 + 连接层设置三者统一。光改 php.ini 只解决一半问题。
# 的是
# 这是
# 英文
# 重启
# 不存在
# 也要
# 浏览器
# 设为
# http
# html
# 字符串
# 仍是
# vs code
# notepad
# bom
# 保存为
# select
# php
# mysql
# apache
# 这不是
# pdo
# mysql连接
# mysqli
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- c++中如何进行二进制文件读写_c++ read与
- 如何在 PHP 单元测试中正确模拟带方法的图像处理
- c++怎么实现高并发下的无锁队列_c++ std:
- 如何理解Go指针和内存分配关系_Go Pointe
- php怎么下载安装后设置错误日志_phpini l
- Win11 C盘满了怎么清理 Win11磁盘清理和
- Python多线程使用规范_线程安全解析【教程】
- Win11怎么格式化U盘_Win11系统U盘格式化
- Win11怎么更改任务栏位置_修改注册表将Win1
- php8.4xdebug无法调试怎么办_php8.
- php怎么下载安装并配置环境变量_命令行调用PHP
- Win11怎么开启专注模式_Windows11时钟
- php增删改查在php8里有什么变化_新特性对cu
- php8.4匿名类怎么用_php8.4匿名类创建与
- c++中如何对数组进行排序_c++数组排序算法汇总
- 如何在Golang中实现文件下载_Golang文件
- Win10怎样清理C盘爱奇艺缓存_Win10清理爱
- Win11时间格式怎么改成12小时制 Win11时
- c++ unordered_map怎么用 c++哈
- Python日志系统设计与实现_高可观测性架构实战
- Win11怎么查看显卡温度 Win11任务管理器查
- Windows10无法连接到Internet_Wi
- Win11鼠标灵敏度怎么调 Win11鼠标指针移动
- Windows10怎么卸载预装软件_Windows
- Win11如何隐藏桌面图标 Win11一键隐藏/显
- WindowsUSB驱动安装异常怎么办_USB驱动
- Win11怎么关闭自动调节屏幕亮度_Windows
- 如何使用Golang实现Web表单数据绑定_自动映
- Win11开机速度慢怎么优化_Win11系统启动加
- Win11怎样彻底卸载自带应用_Win11彻底卸载
- Win11怎么设置任务栏对齐方式_Windows1
- Win11触摸板没反应怎么办_开启Win11笔记本
- Windows10电脑怎么设置虚拟内存_Win10
- 如何处理“XML格式不正确”错误 常见XML we
- Windows10系统怎么查看IP地址_Win10
- php删除数据怎么软删除_添加is_del字段标记
- Win11怎么连接投影仪_Win11多显示器投屏设
- php在Linux怎么部署_LNMP环境搭建PHP
- Win11怎么设置虚拟键盘_打开Win11屏幕键盘
- 如何在Golang中使用time处理时间_Gola
- Windows蓝屏错误0x0000001E怎么修复
- php打包exe怎么传递参数_命令行参数接收方法【
- Win11怎么自动隐藏任务栏_Win11全屏显示设
- c++怎么编写动态链接库dll_c++ __dec
- PyTorch DDP 多进程训练在 Kaggle
- 如何使用Golang实现文件加密_Golang c
- Go语言中slice追加操作的底层共享机制详解
- Linux如何安装Tomcat应用服务器_Linu
- PythonWeb前后端整合项目教程_FastAP
- MySQL 中使用 IF 和 CASE 实现查询字

QQ客服