openSUSE之PHP学习之旅(2、中文乱码)

2009年12月22日 Linux, SUSE/openSUSE 暂无评论

我想我们中国人学编程老遇到一个问题就是中文乱码。特别在Linux环境下,解决中文是一件比较重要的事情。

这节开始正式进入PHP的学习中,对于一门语言,特别WEB语言,和数据库打交道是必不可少的。所以我也不从什么PHP语法,面向对象思想那些来开始,直接就看如何去连接数据库。

利用PHPMyAdmin建立一个数据库叫bbs,然后创建一个表。

CREATE TABLE `message` (
  `id` tinyint(1) NOT NULL auto_increment,
  `user` varchar(25) NOT NULL,
  `title` varchar(50) NOT NULL,
  `content` tinytext NOT NULL,
  `lastdate` date NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

我采用UTF8 为了和Linux统一一下编码。

建立文件conn.php

<?php
$conn = @mysql_connect("localhost", "root", "123456") or die(mysql_error());
//if ($conn){
//    echo 'success';
//}
mysql_select_db("bbs", $conn);

mysql_query("set names 'utf8'"); //使用utf8中文编码;

写一个简单的插入页面add.php

<?php
include("conn.php");
if($_POST['submit']){//接收name="submit"
    $sql="insert into message (id,user,title,content,lastdate)
    values ('','$_POST[user]','$_POST[title]','$_POST[content]',now())";
//    echo $sql;
mysql_query($sql);
}
?>
<form action="add.php" method="post">
用户:<input type="text" name="user" /> <br>
标题:<input type="text" name="title" /><br>
内容:<textarea name="content" rows="5" cols="16"></textarea>
<input type="submit" name="submit" value="提交" />
</form>

插入几条命令之后,再去PHPMyAdmin看一下,没有出现乱码。

简单的输出 list.php

<?php

include 'conn.php';

$sql="select * from message";
$query=mysql_query($sql);
while($row=mysql_fetch_array($query)){
    echo "标题:".$row[title]."<br><hr>";
    echo "用户:".$row[user]."<br><hr>";
    echo "内容:".$row[content]."<br><hr>";
    echo "日期:".$row[lastdate]."<br><hr>";}

?>

用客户端连接,避免出现中文乱码,方法如下。

linux-k2b4:~ # mysql --default-character-set=utf8 -uroot -p123456
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 107
Server version: 5.0.51a SUSE MySQL RPM

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

mysql> use bbs
Database changed
mysql> select * from message;
+----+---------+-----------+----------------------------+------------+
| id | user    | title     | content                    | lastdate   |
+----+---------+-----------+----------------------------+------------+
|  3 | fantlam | php学习   | opensuse之php学习之旅      | 2009-12-22 |
|  4 | 我      | 中文      | 解决中文乱码               | 2009-12-22 |
+----+---------+-----------+----------------------------+------------+
2 rows in set (0.00 sec)
这样输出就已经是中文了,如图:

 

给我留言