当前位置:Gxlcms > 数据库问题 > 再续mysql编码问题

再续mysql编码问题

时间:2021-07-01 10:21:17 帮助过:3人阅读

                                  

            +   mysql5.1.3(my.ini--->character_set_server=utf8)

编译安装php5.3.0                                  

 

以上表示:两个不同的php环境,一个编译安装一个yum安装,版本相同,在使用mysql_connect()方法连接同一个mysql时,

在不设置mysql_query("set names utf")或mysql_set_charset("utf8")的前提下,它们默认使用的连库编码是不一样的

  1. <?<span style="color: #000000;">php
  2. </span><span style="color: #800080;">$link</span>=<span style="color: #008080;">mysql_connect</span>("localhost") or <span style="color: #0000ff;">die</span>(<span style="color: #008080;">mysql_error</span><span style="color: #000000;">());<br>
  3. </span><span style="color: #800080;">$res</span>=<span style="color: #008080;">mysql_query</span>("show variables like ‘%char%‘"<span style="color: #000000;">);<br>
  4. </span><span style="color: #0000ff;">while</span>(<span style="color: #800080;">$arr</span>=<span style="color: #008080;">mysql_fetch_assoc</span>(<span style="color: #800080;">$res</span><span style="color: #000000;">)){
  5. </span><span style="color: #008080;">var_dump</span>(<span style="color: #800080;">$arr</span><span style="color: #000000;">);
  6. }</span>

 

 

 

yum版php

  1. <span style="color: #0000ff;">array</span>
  2. ‘Variable_name‘ => <span style="color: #0000ff;">string</span> ‘character_set_client‘ (length=20<span style="color: #000000;">)
  3. </span>‘Value‘ => <span style="color: #0000ff;">string</span> ‘latin1‘ (length=6<span style="color: #000000;">)
  4. </span><span style="color: #0000ff;">array</span>
  5. ‘Variable_name‘ => <span style="color: #0000ff;">string</span> ‘character_set_connection‘ (length=24<span style="color: #000000;">)
  6. </span>‘Value‘ => <span style="color: #0000ff;">string</span> ‘latin1‘ (length=6<span style="color: #000000;">)
  7. </span><span style="color: #0000ff;">array</span>
  8. ‘Variable_name‘ => <span style="color: #0000ff;">string</span> ‘character_set_database‘ (length=22<span style="color: #000000;">)
  9. </span>‘Value‘ => <span style="color: #0000ff;">string</span> ‘utf8‘ (length=4<span style="color: #000000;">)
  10. </span><span style="color: #0000ff;">array</span>
  11. ‘Variable_name‘ => <span style="color: #0000ff;">string</span> ‘character_set_filesystem‘ (length=24<span style="color: #000000;">)
  12. </span>‘Value‘ => <span style="color: #0000ff;">string</span> ‘binary‘ (length=6<span style="color: #000000;">)
  13. </span><span style="color: #0000ff;">array</span>
  14. ‘Variable_name‘ => <span style="color: #0000ff;">string</span> ‘character_set_results‘ (length=21<span style="color: #000000;">)
  15. </span>‘Value‘ => <span style="color: #0000ff;">string</span> ‘latin1‘ (length=6<span style="color: #000000;">)
  16. </span><span style="color: #0000ff;">array</span>
  17. ‘Variable_name‘ => <span style="color: #0000ff;">string</span> ‘character_set_server‘ (length=20<span style="color: #000000;">)
  18. </span>‘Value‘ => <span style="color: #0000ff;">string</span> ‘utf8‘ (length=4<span style="color: #000000;">)
  19. </span><span style="color: #0000ff;">array</span>
  20. ‘Variable_name‘ => <span style="color: #0000ff;">string</span> ‘character_set_system‘ (length=20<span style="color: #000000;">)
  21. </span>‘Value‘ => <span style="color: #0000ff;">string</span> ‘utf8‘ (length=4)

 

手动编译版php

  1. <span style="color: #0000ff;">array</span>
  2. ‘Variable_name‘ => <span style="color: #0000ff;">string</span> ‘character_set_client‘ (length=20<span style="color: #000000;">)
  3. </span>‘Value‘ => <span style="color: #0000ff;">string</span> ‘utf8‘ (length=4<span style="color: #000000;">)
  4. </span><span style="color: #0000ff;">array</span>
  5. ‘Variable_name‘ => <span style="color: #0000ff;">string</span> ‘character_set_connection‘ (length=24<span style="color: #000000;">)
  6. </span>‘Value‘ => <span style="color: #0000ff;">string</span> ‘utf8‘ (length=4<span style="color: #000000;">)
  7. </span><span style="color: #0000ff;">array</span>
  8. ‘Variable_name‘ => <span style="color: #0000ff;">string</span> ‘character_set_database‘ (length=22<span style="color: #000000;">)
  9. </span>‘Value‘ => <span style="color: #0000ff;">string</span> ‘utf8‘ (length=4<span style="color: #000000;">)
  10. </span><span style="color: #0000ff;">array</span>
  11. ‘Variable_name‘ => <span style="color: #0000ff;">string</span> ‘character_set_filesystem‘ (length=24<span style="color: #000000;">)
  12. </span>‘Value‘ => <span style="color: #0000ff;">string</span> ‘binary‘ (length=6<span style="color: #000000;">)
  13. </span><span style="color: #0000ff;">array</span>
  14. ‘Variable_name‘ => <span style="color: #0000ff;">string</span> ‘character_set_results‘ (length=21<span style="color: #000000;">)
  15. </span>‘Value‘ => <span style="color: #0000ff;">string</span> ‘utf8‘ (length=4<span style="color: #000000;">)
  16. </span><span style="color: #0000ff;">array</span>
  17. ‘Variable_name‘ => <span style="color: #0000ff;">string</span> ‘character_set_server‘ (length=20<span style="color: #000000;">)
  18. </span>‘Value‘ => <span style="color: #0000ff;">string</span> ‘utf8‘ (length=4<span style="color: #000000;">)
  19. </span><span style="color: #0000ff;">array</span>
  20. ‘Variable_name‘ => <span style="color: #0000ff;">string</span> ‘character_set_system‘ (length=20<span style="color: #000000;">)
  21. </span>‘Value‘ => <span style="color: #0000ff;">string</span> ‘utf8‘ (length=4)

 

通过phpinfo()查看两个不同php环境的编译参数,找到问题原因:

yum版的php中

--with-mysql=shared,/usr‘ ‘--with-mysqli=shared,/usr/lib64/mysql/mysql_config‘

这两个函数库默认调用的是MySQL客户端库(By default the MySQL database extensions are configured to use MySQL Client Library直译)的,这个时候Linux上是需要安装mysql,但是

编译版php

--with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd 

用的是mysqlnd(具体作用baidu,google)

 

两者最大的区别在于:mysqlnd连接数据库时,默认使用的是mysql服务器端show global variables like "%char%"显示的编码

而另一个始终是使用latin1做为连的库的编码,相当于无形中,一直设置了一个"set names latin1"

 

再续mysql编码问题

标签:

人气教程排行