欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【解决php存取mysql 4.1乱码问题】,下面是详细的分享!
解决php存取mysql 4.1乱码问题
从MySQL 4.1开始引入的多语言支持确实很棒,而且一些特性已经超过了其他的数据库系统。不过我在测试过程中发现使用适用于MySQL 4.1之前的PHP语句操作MySQL数据库会造成乱码,即使是设置过了表字符集也是如此。
MySQL 4.1的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。
查看系统的字符集和排序方式的设定可以通过下面的两条命令:
| 以下为引用的内容:
mysql> SHOW VARIABLES LIKE 'character_set_%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 7 rows in set (0.00 sec) mysql> SHOW VARIABLES LIKE 'collation_%'; +----------------------+-------------------+ | Variable_name | Value | +----------------------+-------------------+ | collation_connection | latin1_swedish_ci | | collation_database | latin1_swedish_ci | | collation_server | latin1_swedish_ci | +----------------------+-------------------+ 3 rows in set (0.00 sec) |
上面列出的值就是系统的默认值。(很奇怪系统怎么默认是latin1的瑞典语排序方式。)
当我们按照原来的方式通过PHP存取MySQL数据库时,就算设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。解决方法是在发送查询前执行一下下面这句:
| 以下为引用的内容:
SET NAMES 'utf8'; 它相当于下面的三句指令: SET character_set_client=utf8; SET character_set_results=utf8; SET character_set_connection=utf8; |
再试试看,就正常了。
以上所分享的是关于解决php存取mysql 4.1乱码问题,下面是编辑为你推荐的有价值的用户互动:
相关问题:PHP向Mysql写入乱码问题
答:首先你在输出的字符前加入header("Content-Type:text/html;charset=gb2312");如果还是乱码就打开/www中的文件(用笔记本打开然后另存为编码ANSI)追问:header("Content-Type:text/html;charset=gb2312"); 早就设定了而且数据库、表都是gb2312字符... >>详细
相关问题:PHP向Mysql写入乱码问题
答:数据库都时乱码就是你传的值有问题~~一点一点查看~~看html页面传值是不时UTF-8了 如果你是输出有问题~~前提时数据库是中文!!首先你在输出的字符前加入 header("Content-Type:text/html;charset=gb2312"); 如果还是乱码就打开/www中的文件(用笔... >>详细
相关问题:php输出mysql中文乱码问题?
答:mysqli_query($dbc, "SET NAMES UTF8"); 你用mysqli链接的数据库,所以必须用对应函数执行,而且编码设置应该紧跟你建立链接下面。 php5以后开始支持面向对象了,还用面向过程的写法,以后升级很麻烦,这个是建议 >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
