建表的时候utf8为缺省编码:
DROP TABLE IF EXISTS `companies`;
CREATE TABLE `companies` (
) ENGINE=MyISAM AUTO_INCREMENT=1DEFAULT CHARSET=utf8;
通过命令对数据操作都不会出现乱码问题。但是一使用java对其进行操作后,所有中文都变为了乱码。网上查了点资料。改了一下
mysql> show variables like '%char%';
+--------------------------+----------------------------+| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
原来是存在latin1的字符编码
SET character_set_client =utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
可输入mysql>SHOW VARIABLES LIKE '%character%' ;命令查看效果。
都变为utf8了。但是运行java 还出现乱码。重新终端mysql.
SHOW VARIABLES LIKE '%character%' ;
mysql> show variables like '%char%';
+--------------------------+----------------------------+| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
没改变。只能修改myconf。 sudo gedit /etc/mysql/my.cnf
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8
重启 sudo /etc/init.d/mysql restart
sudo /etc/init.d/mysql restart
* Stopping MySQL database server mysqld [ OK ]
* Starting MySQL database server mysqld [fail]
……
……
http://www.pc6.com/infoview/Article_63586.html终于在这里找到了答案。原来5.5以前和5.5以后的系统是有区别的。
sudo gedit /etc/mysql/my.cnf 。(5.5以前系统)在【client】下面加入 default-character-set=utf8
在【mysqld】下面加入default-character-set=utf8
Notice:注意 如果修改后不能启动报错试试把default-character-set=utf8改为character_set_server=utf8,仅仅加入到mysqld下面的.client就不需要加了
sudo gedit /etc/mysql/my.cnf 。(5.5以后系统)如下修改:
[client]
default-character-set=utf8
[mysqld]
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
然后重启sudo /etc/init.d/mysql restart
administrator@fly:~$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 38
Server version: 5.5.35-0ubuntu0.13.10.2 (Ubuntu)
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql>
+++++++++++++++++++++++++问题解决++++++++++++++++++++++++
总结:1、在将表的时候最好设置默认编码。养成习惯
2、数据库的编码,在安装完mysql的时候就先改正。
3、java JDBC 操作时,可能会出现乱码,但是还是得从根源上更正问题