为什么我需要mb_convert_encoding才能显示正确的字符



我的网站有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 清单如下:

  • 确保每个源文件都另存为 UTF-8
  • 确保所有页面上都存在<meta charset="UTF-8" />
  • 确保每个数据库表都设置为使用 UTF-8
  • 连接到数据库后运行SET NAMES utf8
  • 在脚本开头调用mb_internal_encoding("UTF-8"),并尽可能使用mb_字符串函数

最新更新