servlet向mysql插入中文乱码

庄泽锐 发布于 2014/03/07 11:44
阅读 1K+
收藏 0

解读下一代网络:算力网络正从理想照进现实!>>>

mysql是5.0的,tomcat5.5的,我通过phpmyadmin向mysql插入中文,不会乱码。而且通过jsp显示也没有乱码。问题通过servlet向mysql插入数据,数据里面包含中文就出现乱码了。而且我在servlet检查获取参数的,发现servlet里面的参数没有乱码。

查询数据库的编码是这样。我买的是虚拟主机,很多东西不给改。怎么解决?求大神搭救。

Variable_name Value
character_set_client latin1
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results latin1
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/

加载中
0
樂天
樂天

假定希望编码是utf8。
数据库和表本身在创建时候可以设置编码,例如:

CREATE DATABASE <db-name> CHARACTER SET utf8 COLLATE utf8_general_ci;

这个网址里也说了如何在创建表的时候指定编码:http://hi.baidu.com/zwnjiejie/item/0ea879d5a7b625cb1b72b43b
如果在指定创建table的时候未指定编码,则默认与数据库指定的编码相同。

可以通过下面的命令查看数据库、表的编码:

show create database <db-name>;
show create table <table-name>;

jsp文件本身应该是utf8编码,使用jdbc等工具连接mysql后,先execute一下“set name utf8”。 

如果编码过滤了,post和get都应该正常。

另外,可以先考虑使用编码过滤器之后获取的字符会不会有乱码。

如果使用的管理工具,比如自带的mysql,若终端(命令提示符,shell等)的本身的编码环境和mysql要输出的字符的编码不同,可能会乱码。(我不确定)
0
PythonLee
PythonLee

第一:可以全部采用post请求,这样乱码问题可以解决

第二:可以后台转码

第三:可以修改tomcat配置 URIEncoding="UTF-8"

PythonLee
PythonLee
回复 @庄泽锐 : 在数据库连接url加上?useUnicode=true&characterEncoding=utf8& 试下,要还是不行就爱莫能助了T_T
庄泽锐
庄泽锐
我使用是post请求,而且使用编码过滤器。后台没有乱码。就不知道怎么在mysql就乱码了。。
返回顶部
顶部