2013-11-04 158 views
0

我的网站有charset = UTF-8,并且mysql DATABASE也设置为UTF-8编码。为什么我需要mb_convert_encoding才能显示正确的字符

我的问题是,当我从mysql检索文本到网站时,我需要使用php函数mb_convert_encoding(@ db_field,'utf-8','iso-8859-1')来正确显示文本。它看起来像那个系统认为mysql数据库是在ISO-8859-1。

回答

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_字符串函数在可能的情况
+0

非常感谢,它真的解决了我的问题。但我不明白为什么有必要运行此功能。即使那个mysql数据库已经被设置为utf8?但是非常感谢,现在正在工作:) – abc

+0

仅仅将表的排序规则设置为UTF-8是不够的,您还需要指定PHP和MySQL服务器*在其通信期间应使用的编码*。添加到我的答案。 –

+0

非常感谢,现在明白了。 – abc

相关问题