热门关键字:  PHP  Cisco  seo  网络广告 虚拟主机 中文域名
当前位置 :| 主页>编程开发>PHP>php技巧>

mysql中文乱码,phpmyadmin乱码,php乱码 产生原因及其解决方法

来源:phpfans.net 作者:我不是鱼 时间:2006-11-28 点击:


mysql> select * from mysqlcode;
+----+-----------+
| id | content   |
+----+-----------+
| 1  | php爱好着 |
+----+-----------+
1 row in set (0.00 sec)

在没有指定字符集gbk时读取也会出现乱码,如下

mysql> select * from mysqlcode;
+----+---------+
| id | content |
+----+---------+
| 1  | php???  |
+----+---------+
1 row in set (0.00 sec)


【在phpmyadmin创建数据库,并指定字符集】



表类型根据自己需要选,这里选MyISAM(支持全文检索);
整理选择 gbk_chinese_ci 也就是gbk字符集
gbk_bin 简体中文, 二进制。gbk_chinese_ci 简体中文, 不区分大小写。

在刚才创建的数据库插入数据库



再浏览时发现是乱码


为什么呢?是因为数据库为gbk字符集,而我们操作时没有指定为gbk
回到数据库首页


可以看到 mysql 连接校对默认的latin1_bin。我们将其改为gbk_chinese_ci


再插入一条数据。看,这条已经正常了


更多phpmyadmin乱码问题请参考本论坛的
http://www.phpfans.net/bbs/viewt ... &extra=page%3D1
php爱好者站 http://www.phpfans.net

【解决php读取数据库乱码】

仍以数据库mysqlcode为例

<?php 
$conn 
mysql_connect("localhost","root",""
);
mysql_query("set names 'gbk'");
//这就是指定数据库字符集,一般放在连接数据库后面就系了
mysql_select_db("test"
);

$sql "select * from mysqlcode"
;
$result mysql_query($sql,$conn
);

?>
<
head
>
<
meta http-equiv="Content-Type" content="text/html; charset=gb2312" 
/>
<
title>mysql 字符编码</title
>
</
head
>

<
body
>
<
table width="300" height="32" border="1" align="center" cellpadding="0" cellspacing="0"

  <
tr
>
    <
td width="71" align="center">id</td
>
    <
td width="229" align="center">内容</td
>
  </
tr
>
 <?
php while($row mysql_fetch_assoc($result
)){
 echo 
"  
 <tr>
    <td align=\"center\">"
.$row['id'].
"</td>
    <td>"
.$row['content'].
"</td>
  </tr>"
;
}?>  
</
table
>
</
body
>
</
html
>
<?
php mysql_free_result($result);?> 
如果我们将mysql_query("set names 'gbk'");注释掉,肯定时乱码


加上那句又正常了


一句话
你数据库用什么编码,在对数据库操作之前就set names '你的编码';

ps:页面申明编码:在HTML代码HEAD里面,可以用<meta http-equiv="Content-Type" content="text/html; charset="XXX" />来告诉浏览器网页采用了什么编码,目前中文网站开发中主要用的是GB2312和UTF-8两种编码。
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
赞助商连接