【问题标题】:why do I need mb_convert_encoding to show the correct characters为什么我需要 mb_convert_encoding 来显示正确的字符
【发布时间】:2013-11-15 03:40:33
【问题描述】:

我的网站有charset=UTF-8,mysql DATABASE也设置为UTF-8编码。

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

【问题讨论】:

    标签: php html mysql encoding mb-convert-encoding


    【解决方案1】:

    连接到数据库后立即运行:

    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_字符串函数

    【讨论】:

    • 非常感谢,它确实解决了我的问题。但我不明白为什么有必要运行这个功能。即使那个mysql db已经设置为utf8?但非常感谢,它现在可以工作了:)
    • 将表的排序规则设置为UTF-8是不够的,还需要指定PHP和MySQL服务器在通信过程中应该使用的编码。将此添加到我的答案中。
    • 非常感谢,现在知道了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 2022-11-13
    • 2019-12-07
    • 2020-08-07
    相关资源
    最近更新 更多