在 web 开发中,PHP 和 MySQL 经常被用于构建数据驱动的网站。由于全球范围内的使用,中文查询是一个常见的任务。
使用 PHP 查询 MySQL 中的中文需要涉及到以下几点:
- MySQL 数据库字符集设置
- 表定义时字符集设置
- PHP 代码中指定字符集编码
- 查询语句中的中文编码
- 结果输出中文字体设置
MySQL 数据库字符集设置
首先在构建数据库时需要指定字符集。MySQL 5.5 以后的版本默认使用 utf8mb4 字符集,该字符集包含了 UTF-8 中所有的字符,支持 emoji 等特殊符号。
CREATE DATABASE myDatabase DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;
这里指定了默认的字符集 utf8mb4,并且默认排序规则为不区分大小写的 utf8mb4_general_ci。
表定义时字符集设置
当创建表时,需要指定该表的字符集。这可以通过以下方式实现:
CREATE TABLE myTable ( myColumn VARCHAR(20) ) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
这里将 myTable 的字符集设置为 utf8mb4,列 myColumn 的默认编码也是 utf8mb4。
PHP 代码中指定字符集编码
在 PHP 中,要与 MySQL 正确的进行数据交换,需要在连接到 MySQL 时指定 UTF-8 编码。
$mysqli = new mysqli($host, $username, $password, $database); $mysqli->set_charset("utf8");
这里通过 set_charset 函数指定连接字符集为 UTF-8。
查询语句中的中文编码
在查询语句中,需要指定中文编码格式。比如可以使用以下方式:
SELECT * FROM myTable WHERE myColumn LIKE '%中文%' COLLATE utf8mb4_general_ci;
这里对比列 myColumn 的值和字符串 '%中文%' 进行匹配,同时使用 utf8mb4_general_ci 排序规则,确保大小写不敏感,同时支持特殊字符。
结果输出中文字体设置
在将查询结果输出到浏览器之前,需要确保中文使用的字体能够正确的显示。可以在 CSS 样式表中设置。
body { font-family: 'Microsoft YaHei',Arial,sans-serif; }
这里使用 'Microsoft YaHei' 字体,通常能够支持中文简体和繁体,同时兼容英文等字符集。
以上几种设置可以有效的在 PHP 和 MySQL 中进行中文查询,通过使用 UTF-8 编码和通用的排序规则,可以有效的处理不同语言和字符集的数据。