【问题标题】:why do i have to use mb_convert_encoding($name,'ISO-8859-15','utf-8') to get accented chars to display?为什么我必须使用 mb_convert_encoding($name,'ISO-8859-15','utf-8') 来显示重音字符?
【发布时间】:2011-11-08 01:58:46
【问题描述】:

我在这里使用的数据不在使用 utf8 编码的页面上

我已将我的数据库和字段设置为使用 utf8_general_ci

现在无论出于何种原因,我都必须在变量上使用以下代码,以使其在数据库中正确显示重音字符:

mb_convert_encoding($name,'ISO-8859-15','utf-8');

这对我来说毫无意义。为什么phpmyadmin是utf8,数据是utf8,数据库和表字段是utf8,为什么要转成ISO-8859-15?

【问题讨论】:

    标签: php mysql encoding utf-8 mb-convert-encoding


    【解决方案1】:

    您很可能没有将数据库连接设置为 UTF-8,因此您的数据库希望您发送 ISO-8859 编码数据。见http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html

    【讨论】:

    • 字符集客户端utf8(全局值)latin1字符集连接utf8(全局值)latin1字符集数据库latin1字符集文件系统二进制字符集结果utf8(全局值)latin1字符集服务器latin1字符集系统utf8
    • 看起来有些变量设置为 latin1,我假设这就是您的意思?我无法在 INI 中找到更改它的位置...
    • 对于每个新连接,连接后,发出查询SET NAMES utf8 或使用mysql_set_charset。由于无法在生产环境中更改 ini 设置的情况并不少见,因此这是最便携的方法。
    • mysql_query("设置名称 utf8");完美地工作。我认为这样做一次需要,没有意识到你必须在每次新连接时都这样做。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-12-15
    • 2015-12-30
    • 2013-01-23
    • 2014-08-29
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多