视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Redhat5下MySql遇到的乱码问题_MySQL
2020-11-09 18:13:08 责编:小采
文档


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

下载本文
显示全文
专题