用UTF-8解决中文乱码问题,从以下几方面考虑:
数据存储:MySQL
所有的表和文本字段的字符集设置为utf8mb4。数据库在存储或查询都会以utf8mb4编码处理数据。
CREATE TABLE `person` (
`number` int(11) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`birthday` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
程序访问数据
应用程序和数据库建立连接时设置连接的字符集为utf8mb4。
一般情况下,PHP的数据库驱动都会提供对访问数据的字符编码配置。
PDO
$dbh = new PDO('mysql:charset=utf8mb4');
mysqli
$mysqli->set_charset('utf8mb4');
mysql已被废弃,不做说名
HTTP响应数据输出
HTTP响应请求,需要对返回的数据utf编码。设置HTTP响应头信息Content-Type为UTF-8。对于HTML页面需要设置 metadata
PHP中,可以在php.ini配置文件中设置default_charset为utf8。
数据请求输入