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

时间:2013-11-04 13:48:58

标签: php html mysql encoding 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中。

1 个答案:

答案 0 :(得分:4)

连接数据库后立即运行:

mysqli_query("SET NAMES utf8"); /* or mysql_query */

仅将表的排序规则设置为UTF-8是不够的,还需要指定(使用此查询)在PHP和MySQL之间的通信期间应该使用的编码服务器。
更多详情:SET NAMES utf8 in MySQL?

确保各地的UTF-8兼容性很棘手;我的UTF-8清单如下:

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