项目进行到和服务器交互,通过post访问服务器端jsp,jsp访问服务器端mysql数据库,最终返回到客户端的中文出现乱码问题。
在整个流程中,出现错误的原因可能是三个:post未设置编码或者编码不相符合,jdbc出现问题,linux下mysql初始码制问题。
在经过繁琐的排查后,最终确定问题为mysql编码问题。下文介绍如何解决linux下mysql中文乱码问题。
首先进入mysql命令行模式,键入mysql -uroot -p 即可进入。随后键入 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 | /alidata/server/mysql-5.1.73/share/charsets/ |
则已修改正确,而mysql默认初始设置的都是latin1而非utf8。
一种解决方法是更改表格的属性设置为utf8或者在创建表格的时候在最后加上DEFAULT CHARSET=utf8
。设置表格为utf8码。这样的方法有可能失效。
最根本的解决方法是打开mysql配置文件修改。linux下mysql配置文件名为my.cnf,目录为/etc/my.cnf,打开后按照以下操作:
--在 [mysqld] 标签下加上三行 default-character-set = utf8 character_set_server = utf8 lower_case_table_names = 1 //表名不区分大小写(此与编码无关) --在 [mysql] 标签下加上一行 default-character-set = utf8 --在 [mysql.server]标签下加上一行 default-character-set = utf8 --在 [mysqld_safe]标签下加上一行 default-character-set = utf8 --在 [client]标签下加上一行 default-character-set = utf8
上述标签若未能全部找到也没关系。再次打开mysql命令行,执行SHOW VARIABLES LIKE 'character_set_%';
后若仍存在latin1,则在mysql命令行下执行以下命令:
执行后再执行上述show 命令可得到目标结果。
设置完成后需要重新启动mysql,重启命令 /etc/init.d/mysqld restart 。
原数据表需要删除后重建。
最终完成,大功告成。
小结
1、修改/etc/my.cnf文件,增加以下几行:
[client] # pipe= # socket=MYSQL port=3306 default-character-set=utf8 [mysql] no-beep # default-character-set= default-character-set=utf8 # SERVER SECTION # ---------------------------------------------------------------------- # The following options will be read by the MySQL Server. Make sure that # you have installed the server correctly (see above) so it reads this # file. # server_type=3 [mysqld] character_set_server=utf8
2、重启mysql服务:
service mysql stop; service mysql status; service mysql start; 或者 service mysql restart;
敢达决战官方正版 安卓版v6.7.9
下载敢达决战 安卓版v6.7.9
下载像素火影骨架佐助 (Perseverance Fire Shadow)手机版v1.16
下载要塞英雄 安卓版v33.20.0-39082670-Android
下载梦想城镇vivo最新版本 安卓版v12.0.1
梦想城镇vivo版是这款卡通风模拟经营类手游的渠道服版本,玩
怦然心动的瞬间 安卓版v1.0
怦然心动的瞬间是一款真人向的恋爱互动游戏,在游戏中玩家将扮演
曼尼汉堡店游戏 安卓版v1.0.3
曼尼汉堡店是一款非常好玩的精品恐怖类型冒险游戏,在这款游戏中
现代总统模拟器去广告版 安卓版v1.0.46
现代总统模拟器是一款休闲养成类游戏,可能对于不少的玩家来说都
现代总统模拟器付费完整版 安卓版v1.0.46
现代总统模拟器高级版在商店是需要付费的,相对于普通版本,高级