【发布时间】:2017-10-09 18:26:54
【问题描述】:
我已经看到了关于这个主题的几个问题,但这里是长篇大论的短篇:我在 phpmyadmin 中创建了一个使用 utf8_general_ci 排序规则的数据库,并且某些表中的行可以包含英文或日文文本。我正在使用 php mysqli 查询显示这些行,但从中得到了乱码。
我所做的工作包括以下内容:
为 HTML 标头的字符集添加元标记
meta http-equiv="Content-Type" content="text/html; charset=UTF8"通过
set_charset()明确告诉mysqli 连接使用UTF-8,并使用character_set_name()进行健全性检查验证数据库/相关表/列的排序规则
添加一些与任何 mysql 查询无关的日语文本,以验证浏览器是否可以呈现它
确保 php 文件采用 UTF-8 编码
验证日文输入是否正确输入到数据库和 php 中
使用
utf8_general_ci排序规则使用可比较的测试数据库检查数据库的完整性(如果问题 db/table/column 最初是使用不同的排序规则产生的,并且更改它会导致现有行出现乱码)验证information_schema表中的数据库排序规则和charset,使得charset为utf8,排序规则为
utf8_general_ci在mysqli查询中尝试将相关列转换为utf8(这样喜欢抛出错误,所以看起来无效)
以上所有检查结果我仍然胡言乱语,因此我询问查询中返回的行是否有可能与 db/table/column 的排序规则不匹配导致它被呈现不正确。
为了完整起见,这是在 wampserver3 部署中使用 php 5.6.25、mysql 5.7.14 和 完成的phpmyadmin 4.6.4。可以取英文或日文的栏目设置为TEXT类型。
我完全被这个难住了。
【问题讨论】:
标签: php mysql utf-8 phpmyadmin wampserver