做Web应用最头疼的就是码表的问题了哈,一不注意中文就乱码了哈!
今天做MySql数据库的时候,插入了一行记录,里面包含了中文字段直接给我显示“????”
mysql> select * from table_user;
+------------+------------+----------+------------------+--------+
| f_username | f_password | f_name | f_email | f_type |
+------------+------------+----------+------------------+--------+
| admin | admin | ??? | 11@qq.com | 1 |
| student | 123 | Sunshine | 112@qq.com | 0 |
+------------+------------+----------+------------------+--------+
2 rows in set (0.00 sec)
身为一个中国人,怎么能忍受这东西不显示我们的中文.
于是:
在mysql的命令下:
mysql> use mydbname (进入到我建立的database中)
mysql> status (输入status, 用来显示当前database的状况)
--------------
mysql Ver 14.14 Distrib 5.5.32, for debian-linux-gnu (x86_64) using readline 6.2
Connection id: 54
Current database: mydbname
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.5.32-0ubuntu0.12.04.1 (Ubuntu)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/run/mysqld/mysqld.sock
Uptime: 5 hours 18 min 41 sec
Threads: 1 Questions: 182 Slow queries: 0 Opens: 225 Flush tables: 1 Open tables: 55 Queries per second avg: 0.009
--------------
看到这边,如果你对英语还是拥有四级水平的话,应该你已经明白了哈
这边Db characterset 和 Server characterset 都不是utf8, 所以你显示出来是"???"就不奇怪了
那么因为我们这边是Db的问题,我们来看一下要怎么设置默认的 DB 编码格式
以下示例给出创建数据库时指定编码的两种方式:
1)CREATE DATABASE mydbname CHARACTER SET utf8 COLLATE utf8_general_ci;
2)CREATE DATABASE IF NOT EXISTS mydbname DEFAULT CHARACTER SET utf8;
这样就是设置好了我们数据库的编码格式
当然,表的编码格式也要设置一下:
CREATE
TABLE
IF
NOT
EXISTS test (
name
varchar
(64)
NOT
NULL
) ENGINE=InnoDB
DEFAULT
CHARSET=utf8;
插入一条数据验证一下是否有效:
mysql> insert into test values('小刚');
mysql> select * from test;
+--------+
| name |
+--------+
| 小刚 |
+--------+
1 row in set (0.00 sec)
当然最好的方法就是修改默认my.ini中的属性值:这个方法网上很多,可以自己去找下!
如果你的mysql中没有my.ini,那么可能你需要换一个mysql了
这时候正常卸载完mysql之后,你还需要额外的一步操作来把“MYSQL”服务删除掉
在程序->运行->“cmd”->
C:\ > sc delete mysql
这样就可以成功清除干净mysql了!