到此应该就可以解决绝大多数我们遇到的乱码问题了,另外还必须强调的是,有时候乱码的出现有可能是以上几种原因混合造成的。
对于这样的问题处理起来就比较的麻烦。因为首先要保证你在数据库中保存的数据的字符集与数据库的字符集是一致的。如果你在一个utf8的数据库中保存了GBK字符数据(如果你页面的编码与数据库的编码不一致,那么产生这个问题的可能性就很大),那么假设以上的设置都正确,结果还是会出现乱码的问题。不过这类问题一旦确定了产生的原因,那么就还是有办法解决的,比如刚才我举的这个例子。
我们如果能确保其他环节的设置都是正确的,并且能够确认是由于把gbk的数据存到了utf8的数据库中而造成的乱码,那么我就可以把这些数据从数据库中取出来之后再用iconv()转换编码也是可以的。
总而言之,我们应当尽量的保证数据库中的数据是正确的,那么问题处理起来就相对简单了。
说了一大堆可能把你给弄迷糊了,我将其总结为以下四点,便于大家记忆。
1、要保证数据库中存的数据与数据库编码一致,即数据编码与character_set_database一致;
2、要保证通讯的字符集与数据库的字符集一致,即character_set_client, character_set_connection与character_set_database一致;
3、要保证SELECT的返回与程序的编码一致,即character_set_results与程序编码一致;
4、要保证程序编码与浏览器编码一致,即程序编码与<meta http-equiv="Content-Type" content="text/html; charset=?"/>一致。
文章来源于领测软件测试网 https://www.ltesting.net/