openSUSE之PHP学习之旅(2、中文乱码)
我想我们中国人学编程老遇到一个问题就是中文乱码。特别在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)
这样输出就已经是中文了,如图: