在 php 开发过程中,会经常涉及到将数据保存到数据库中。但是,有时候会出现保存数据到数据库出现乱码的情况。本篇文章将着重介绍 php 数据保存到数据库乱码的问题,以及解决办法。
一、问题出现的原因
在 PHP 更新 MySQL 数据库的时候,如果 PHP 和 MySQL 的字符集不一致,就有可能出现乱码问题。针对此问题,需要在代码中指定正确的字符集。
二、解决办法
- 修改 MySQL 数据库字符集
- 方法一:在 MySQL 数据库中修改字符集
可以在 MySQL 数据库中通过以下命令修改字符集
立即学习“PHP免费学习笔记(深入)”;
SET NAMES 'utf8mb4';
该命令只对当前连接有效,如果需要永久修改,需要在 MySQL 配置文件中修改。修改方式如下:
[mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci
- 方法二:在 php 代码连接数据库时修改字符集
在连接数据库时加上一句代码即可:
mysqli_set_charset($mysqli, "utf8mb4");
- 修改 PHP 中字符编码
在 PHP 中使用函数header()可以设置http头,如下:
header("Content-type:text/html;charset=utf-8");这样设置后所有输出到浏览器的字符集都是 utf-8 的。
51shop 由 PHP 语言开发, 使用快速的 MySQL 数据库保存数据 ,为中小型网站实现网上电子商务提供一个完美的解决方案.一、用户模块1. 用户注册:用户信息包括:用户ID、用户名、用户密码、性别、邮箱、省份、城市、 联系电话等信息,用户注册后不能立即使用,需由管理员激活账号,才可使用(此功能管理员可设置)2. 登录功能3. 资料修改:用户可修改除账号以后的所有资料4. 忘记密码:要求用
在 PHP 中,还可以指定数据保存到数据库的编码方式:
mysqli_query($link, "SET NAMES 'utf8mb4'");
其中,$link 是连接 MySQL 数据库的对象。
- 检查数据表的字符集
在创建数据表时,需要指定字符集:
CREATE TABLE `mytable`(`id` INT, `name` VARCHAR(50)) DEFAULT CHARSET=utf8mb4;
- 在网页中指定字符集
在 html 的 head 中加上以下代码:
这样设置后所有显示的字符集都是 UTF-8。
总结:
PHP 数据保存到数据库乱码问题虽然比较常见,但其实只要搞清楚问题的原因,就可以通过以上的解决办法轻松解决。同时,在开发过程中应尽可能使用 utf8mb4 字符集。










