Php 从mysql数据库提取字符编码时出现问题
可能重复:Php 从mysql数据库提取字符编码时出现问题,php,mysql,character-encoding,Php,Mysql,Character Encoding,可能重复: 好吧,这太愚蠢了,我搞不懂 Mysql数据库设置为utf8\u常规\u ci排序规则。我遇到问题的领域是长文本类型 作为é添加到数据库的字符或其他重音字符返回为�. 我通过stripslashes运行输出,并尝试了使用和不使用html\u entity\u decode两种方法,但在输出中没有发现任何变化。我做错了什么 干杯您尝试插入的字符串编码是什么?如果它在ISO-8859-1中,您可以使用PHP函数utf8_encode()将其编码为UTF-8,然后再将其插入数
好吧,这太愚蠢了,我搞不懂 Mysql数据库设置为utf8\u常规\u ci排序规则。我遇到问题的领域是长文本类型 作为
é
添加到数据库的字符或其他重音字符返回为�.
我通过stripslashes
运行输出,并尝试了使用和不使用html\u entity\u decode
两种方法,但在输出中没有发现任何变化。我做错了什么
干杯您尝试插入的字符串编码是什么?如果它在ISO-8859-1中,您可以使用PHP函数utf8_encode()将其编码为UTF-8,然后再将其插入数据库
正确编码真的很棘手-层太多了:
- 浏览者
- 页面
- PHP
- MySQL
utf8
,但存储为不同的编码,那么MySQL会将它们视为utf8
,您就有麻烦了。这意味着你必须先解决这个问题
检查什么
您需要检查每个层的数据流编码
- 检查HTTP头,头
- 检查请求主体中真正发送的内容
- 别忘了MySQL几乎无处不在:
- 数据库
- 桌子
- 纵队
- 服务器作为一个整体
- 客户
确保到处都有合适的
windows-1250
中接收数据,并希望存储在utf-8
中,则在存储之前使用此SQL:
SET NAMES 'cp1250';
如果数据库中的数据为windows-1250
,并且希望检索utf8
,请使用:
SET CHARSET 'utf8';
最后一点:
不要依赖太“聪明”的工具来显示数据。例如,phpMyAdmin(在我使用它时)的编码非常糟糕。它穿过所有的层,所以很难找到。此外,Internet Explorer还有一种非常愚蠢的行为,即根据奇怪的规则“猜测”编码。使用可以切换编码的简单编辑器。另外,我推荐MySQL Workbench。另外,+1,我会在每次需要真正理解它时添加它,以获得正确的编码。如果一个人只是根据某个特定的情况按照记忆中的指令而不理解,那么编码问题迟早会出现。不幸的是,cargo cult编程没有任何进展。