我的网站有charset=UTF-8,mysql DATABASE也被设置为UTF-8编码。
我的问题是,当我从MySQL检索文本到网站时,我需要使用PHP函数mb_convert_encoding(@db_field,'UTF-8','ISO-8859-1')来正确显示文本。 看起来系统认为MySQL DB在ISO-8859-1中。
在连接到数据库后立即运行以下命令:
mysqli_query("SET NAMES utf8"); /* or mysql_query */
将表的排序规则设置为 UTF-8 是不够的,您还需要指定(使用此查询)PHP 和 MySQL 服务器之间通信期间应使用的编码.
更多详细信息:在 MySQL 中设置名称 utf8?
在任何地方的兼容性都很棘手;我的 UTF-8 清单如下:
- 确保每个源文件都另存为 UTF-8
- 确保所有页面上都存在
<meta charset="UTF-8" />
- 确保每个数据库表都设置为使用 UTF-8
- 连接到数据库后运行
SET NAMES utf8
- 在脚本开头调用
mb_internal_encoding("UTF-8")
,并尽可能使用mb_
字符串函数