PHP读取MySQL乱码并共享xxx的原则
首先,MySQL的字符集问题,Windows可以在my.ini修饰PHP代码
复制代码代码如下所示:
{ MySQL }
默认字符集= utf8 / /客户端的默认字符集
{他}
默认字符集= utf8 / /服务器的默认字符集
假如我们把两个都UTF8,然后进入显示variebles likecharacter_set_ %在MySQL客户端命令行;你可以看到下面的文字:
复制代码代码如下所示:
character_set_client latin1
character_set_connection latin1
character_set_database UTF8
character_set_results latin1
character_set_server UTF8
character_set_system UTF8
如果我们从数据库读取数据采用UTF-8的PHP程序,这很可能是一堆乱码或其他。
解决的方法是执行一个查询SET NAMES UTF8在连接数据库和读取的数据是,之前,在PHP
mysql_query(SET NAMES UTF8);
/ /这句话必须放在数据库服务器的连接语句{ $连接= mysql_connect(db_host美元美元美元,db_user,db_psw)或死亡(连接服务器失败后);}
它可以显示正常(只要数据库中的信息是正常的)。
MySQL SET NAMES UTF8命令行输入,然后显示variebles实施;likecharacter_set_ %;latin1,发现character_set_client,character_set_connection,character_set_results变量的值改为UTF8,原来是猴子的3个变量。
查阅手册,上面的句子等于:
集character_set_client = utf8;
集character_set_results = utf8;
集character_set_connection = utf8;
看看这3个变量的作用:
信息输入路径:客户端-连接-服务器;
信息输出路径:服务器-连接-结果。
换句话说,每个路径已更改字符集编码的3倍。以随机码输出为例,在服务器的数据传输从utf8连接latin1,结果是转移到latin1。UTF-8的翻页结果了。如果两个字符集是不相容的,如latin1和UTF8,转型的过程是不可逆的和破坏性的。
但在这里宣布SET NAMES UTF8功能只是暂时的,而MySQL是重新启动,默认的恢复。
在服务器上配置MySQL的问题。是不是所有我们读和写都加设namesutf8确保一致的数据传输编码的数据库这三个变量可以通过将MySQL配置为默认的字符集来实现吗没有,我在网上找不到答案,所以从服务器配置的角度看,没有办法省略这一行。
摘要:为了更多的服务器,让你的网页显示,或添加SET NAMES UTF8,即使你不加上这句话,你可以定期访问它。