再续mysql编码问题

yum安装版php5.3.0                                  

            +   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")的前提下,它们默认使用的连库编码是不一样的

<?php
$link=mysql_connect("localhost") or die(mysql_error());
$res=mysql_query("show variables like ‘%char%‘");
while($arr=mysql_fetch_assoc($res)){
    var_dump($arr);
}

yum版php

array
  ‘Variable_name‘ => string ‘character_set_client‘ (length=20)
  ‘Value‘ => string ‘latin1‘ (length=6)
array
  ‘Variable_name‘ => string ‘character_set_connection‘ (length=24)
  ‘Value‘ => string ‘latin1‘ (length=6)
array
  ‘Variable_name‘ => string ‘character_set_database‘ (length=22)
  ‘Value‘ => string ‘utf8‘ (length=4)
array
  ‘Variable_name‘ => string ‘character_set_filesystem‘ (length=24)
  ‘Value‘ => string ‘binary‘ (length=6)
array
  ‘Variable_name‘ => string ‘character_set_results‘ (length=21)
  ‘Value‘ => string ‘latin1‘ (length=6)
array
  ‘Variable_name‘ => string ‘character_set_server‘ (length=20)
  ‘Value‘ => string ‘utf8‘ (length=4)
array
  ‘Variable_name‘ => string ‘character_set_system‘ (length=20)
  ‘Value‘ => string ‘utf8‘ (length=4)

手动编译版php

array
  ‘Variable_name‘ => string ‘character_set_client‘ (length=20)
  ‘Value‘ => string ‘utf8‘ (length=4)
array
  ‘Variable_name‘ => string ‘character_set_connection‘ (length=24)
  ‘Value‘ => string ‘utf8‘ (length=4)
array
  ‘Variable_name‘ => string ‘character_set_database‘ (length=22)
  ‘Value‘ => string ‘utf8‘ (length=4)
array
  ‘Variable_name‘ => string ‘character_set_filesystem‘ (length=24)
  ‘Value‘ => string ‘binary‘ (length=6)
array
  ‘Variable_name‘ => string ‘character_set_results‘ (length=21)
  ‘Value‘ => string ‘utf8‘ (length=4)
array
  ‘Variable_name‘ => string ‘character_set_server‘ (length=20)
  ‘Value‘ => string ‘utf8‘ (length=4)
array
  ‘Variable_name‘ => string ‘character_set_system‘ (length=20)
  ‘Value‘ => string ‘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"

时间: 2024-11-04 02:47:50

再续mysql编码问题的相关文章

mysql编码问题

mysql编码设置 mysql> SHOW VARIABLES LIKE 'character_set_%';+--------------------------+----------------------------+| Variable_name | Value |+--------------------------+----------------------------+| character_set_client | latin1 || character_set_connect

Mysql编码

查看Mysql编码两种命令: (1)mysql> show variables like 'character%';+--------------------------+----------------------------+| Variable_name | Value |+--------------------------+----------------------------+| character_set_client | utf8 || character_set_connec

mysql编码问题总结

网上查了一些mysql编码相关的资料,在这里整理下,不对的地方欢迎各位批评指正. 1. mysql字符集相关的变量: - character_set_server:默认的内部操作字符集 – character_set_client:客户端来源数据使用的字符集 – character_set_connection:连接层字符集 – character_set_results:查询结果字符集 – character_set_database:当前选中数据库的默认字符集 – character_set

修改Mysql编码集

通过MySQL命令行修改:mysql> set character_set_client=utf8;Query OK, 0 rows affected (0.00 sec)mysql> set character_set_connection=utf8;Query OK, 0 rows affected (0.00 sec)mysql> set character_set_database=utf8;Query OK, 0 rows affected (0.00 sec)mysql>

查看修改mysql编码方式[转载]

MySQL的默认编码是Latin1,不支持中文,要支持中午需要把数据库的默认编码修改为gbk或者utf8. 1.需要以root用户身份登陆才可以查看数据库编码方式(以root用户身份登陆的命令为:>mysql -u root –p,之后两次输入root用户的密码),查看数据库的编码方式命令为: >show variables like 'character%';+--------------------------+----------------------------+| Variable

MySQL编码设置方法 MySQL编码为utf8设置方法

mysql的默认编码是拉丁,我每次JSP制作网页用insert语句插入数据库时汉字都会显示成问号,安装mysql后,启动服务并登陆,使用show variables命令可查看mysql数据库的默认编码: 由上图可见database和server的字符集使用了latin1编码方式,不支持中文,即存储中文时会出现乱码.以下是命令行修改为utf-8编码的过程,以支持中文. (1)关闭mysql服务 [plain] view plaincopy service mysql stop (2)修改 /etc

Mysql编码, Mysql编码流程, Mysql编码顺序, Mysql编码原理, Mysql编码修改依据

编码查看方式以及解释说明: 需要以root用户身份登陆才可以查看数据库编码方式(以root用户身份登陆的命令为:>mysql -u root –p,之后两次输入root用户的密码),查看数据库的编码方式命令为: >show variables like 'character%'; +--------------------------+----------------------------+ | Variable_name | Value | +-----------------------

mysql编码详解

在开发程序的时候,我们使用mysql数据库开发的时候,有时会碰到自己明明输入的是中文,为什么数据库中存储的就是???? 1.在配置Connection URL时,加上?useUnicode=true&characterEncoding=utf-8 2.编辑/etc/my.cnf 在[mysqld]下添加 default-character-set=utf8 在[client]下添加 default-character-set=utf8   可是这样做的原理是什么?为什么这样做就能解决问题那? 逐

MYSQL 编码的设置

你是不是在被中文乱码所困扰??? 那就往下看吧 如果你是windows的用户,先打开cmd.exe   打入命令 mysql  如果不行那就是环境变量有问题,把mysql的bin放到环境变量的path里 接下来就是在my.ini修改character-set-server=utf8 大功告成 真是深坑! MYSQL 编码的设置