Heim  >  Artikel  >  Datenbank  >  Redhat5下MySql遇到的乱码问题_MySQL

Redhat5下MySql遇到的乱码问题_MySQL

WBOY
WBOYOriginal
2016-06-01 13:43:30965Durchsuche

Redhat

bitsCN.com 我在虚拟机上安装了redhat并安装了mysql数据库,并在本地通过java访问,直接使用jdbc访问。后来发现当数据库存储汉字时存在乱码问题,随后在网上找资料进行解决,现在问题已经解决,来总结一下乱码的几个问题。 更改数据库默认字符集编码:更改mysql配置文件,这个配置文件在/etc/my.cnf,可能安装mysql后这个文件就有了,如果没有,请回到根目录然后查询cnf文件:Java代码  find / -iname '*.cnf' -print   拷贝 small.cnf、my-medium.cnf、my-huge.cnf、my-innodb-heavy-4G.cnf其中的一个到/etc下,改名为my.cnf:Java代码  cp /usr/share/mysql/my-medium.cnf /etc/my.cnf   拷贝路径根据查询出来的结果修改。修改my.cnfJava代码  vi /etc/my.cnf   在[client]下添加Java代码  default-character-set=gbk   在[mysqld]下添加Java代码  default-character-set=gbk   然后重启mysql。登录mysql查询是否生效:Java代码  mysql> show variables like 'collation_%';  mysql> show variables like 'character_set_%';  注意如果你设置的是UTF-8请设置utf8,而不是utf-8,否则你的mysql重启时不能启动。  修改数据库字符集后再修改数据库的字符集:Java代码  mysql>use mydb  mysql>alter database mydb character set gbk;   建议是在创建数据库时就指定字符集Java代码  mysql>create database mydb character set gbk;  除了使用命令来修改数据的字符集,也可以修改其配置文件修改 /var/lib/mysql/mydb/db.optJava代码  default-character-set=latin1  default-collation=latin1_swedish_ci   为Java代码  default-character-set=gbk  default-collation=gbk_general_ci   重起MySQL  建表时注意:除了修改mysql和其数据库的字符集外,要注意建表时你可能用的是导出的SQL语句,这些语句中可能包含了建表的字符集,一定要修改或删除这些语句:Sql代码  CREATE TABLE `NewTable` (  `id`  int(11) NOT NULL ,  `name`  varchar(50) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL ,  `age`  int(100) NULL DEFAULT NULL ,  PRIMARY KEY (`id`)  )  ENGINE=MyISAM  DEFAULT CHARACTER SET=gbk COLLATE=gbk_chinese_ci  CHECKSUM=0  ROW_FORMAT=DYNAMIC  DELAY_KEY_WRITE=0  ;   连接方面:如果数据库配置正确,那么使用管理工具如Navicat for MySQL时就不会有问题了,但是在程序中难免还是有问题。 除了对于数据库方面的注意外,在连接数据库要注意指定连接的字符集Java代码  jdbc:mysql://192.168.154.128:3306/t2?useUnicode=true&characterEncoding=gbk   程序方面:可是就算到这里仍然可能是乱码,但是没有那么严重了,这就要你在代码中进行转换了。Java代码  String newStr = new String(s.getBytes("ISO-8859-1"),"GBK");    也许有人会说,乱码就是乱码,还严重不严重?其实乱码在我看来分为两种情况,一种就是存储或者其他方面乱了,而另一种是存储是对的但是显示有问题。比如你设置正确后使用管理工具没有问题但是程序读取就有问题。如果你看到的乱码是根本不知道显示的是什么,那就是严重的。但如果你看到的是????那在我看来就是缺少转换,就不属于大问题。当然这是个人看法,请大家不要钻牛角尖。   作者 cuisuqiang bitsCN.com
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn