微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 来自MySQL数据库的字符的UTF-8问题(例如éasé)

我知道有关于UTF-8问题的数百个问题,但我尝试了所有我能找到的方法,但没有一个有帮助.

事实:
我正在尝试从MySQL数据库中读取包含é的字符串并将其显示PHP页面上.实际上,它显示为é(但字体不能识别它,因此使用另一种认字体).当我想使用PHP函数字符串转换文件名以进行字符串替换时,出现了麻烦. PHP根本不认为这是é字符.

这是我正在做的事情的快速概述:

1)String存储在MysqL数据库中. MysqL服务器设置是:
MysqL连接排序规则utf8_unicode_ci
MysqL charset:UTF-8 Unicode(utf8)
数据库本身设置为collat​​ion utf8_unicode_ci(MyISAM存储引擎,由于共享服务器而无法更改)
实际表设置为collcation utf8_unicode_ci(InnoDB存储引擎)

é在PHPMyAdmin中正确显示.数据通过Java程序插入到数据库中,但我也尝试使用手动输入的数据(在PHPMyAdmin中输入).

2)PHP default_charset未设置(NO VALUE),我在共享服务器上并且放置手动覆盖PHP.ini似乎不起作用.使用ini_set(“default_charset”,’utf-8′);有效,但对我遇到的问题没有影响.

3)在运行实际的选择查询之前,我查询SET NAMES’utf8′.查询本身是无关紧要的但是对于测试我选择了一个简单的SELECT标题FROM items WHERE item_id = 1

4)PHP文件本身编码为UTF-8.我使用< Meta http-equiv =“content-type”content =“text / html; charset = utf-8”/>为html设置了正确的字符集.

5)为了测试问题,我在返回的字符串(Astérix)上使用了htmlentities,检查源代码将其转换为Ast& Atilde;& copy; rix当然不正确.因此,字符串在浏览器中显示为Astérix.

可能的原因是什么?对我来说,似乎我设置了所有可以设置为UTF-8的东西.

解决方法:

http://php.net/manual/en/ref.mbstring.php – 查看多字节字符串函数.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐