先看一下实例代码:
- <html>
- <head>
- <title></title>
- </head>
- <body>
- <?php
- $mysql_server_name='localhost';
- $mysql_username='root';
- $mysql_password='000000';
- $mysql_database='lib';
- $conn=mysql_connect($mysql_server_name,$mysql_username,$mysql_password,$mysql_database);
- $sql="select name,age from mytb";
- print($conn);
- $rs=mysql_db_query("lib","select * from mytb",$conn);
- print("
- <br>");
- while($row = mysql_fetch_object($rs)){
- print ($row->name.":".$row->age."<br>");
- }
- mysql_close($conn);
- ?>
显示如下:
- resource id #1
-
- dd:54
- ddd:8
- ??:15
- ???:25
- ??:32
mysql编码:utf8,gbk都试过了,mysql font 和命令行显示都正确.
问题补充,乱码:
???:15,???:25,??:32
这几行,数据库里的值是汉字,显示出来的是问号.
解决办法:在$rs=mysql_db_query("lib","select * from mytb",$conn);前面加上如下代码:
mysql_query("set names gb2312");或者mysql_query("set names gbk");
下面看一下关于解决乱码的方法:
一.gb2312,gbk,utf8等支持多字节编码的字符集都可以储存汉字,gb2312中的汉字数量远少于gbk,而gb2312,gbk等都可在utf8下编码.
二.用命令show variables like 'character_set_%';查看当前字符集设定:
- mysql> show variables like 'character_set_%';
- +--------------------------+--------+
- | variable_name | value |
- +--------------------------+--------+
- | character_set_client | gb2312 |
- | character_set_connection | gb2312 |
- | character_set_database | gb2312 |
- | character_set_filesystem | binary |
- | character_set_results | gb2312 |
- | character_set_server | latin1 |
- | character_set_system | utf8 |
- +--------------------------+--------+
- 7 rows in set (0.02 sec)
这里设置的字符是gb2312,显示中文乱码主要有两个设置:character_set_connection 和character_set_results,如果你的这两个设置不支持中文编码,就会出现乱码,只要:set character_set_results =gbk;就设置中文编码了.
三.set names charset_name;可以一次性设置客户端的所有字符集. |