sww123的gravatar头像
sww123 2016-06-21 14:12:26

jsp为什么保存中文到mysql数据库成了乱码?

JSP中文乱码问题页面经过过滤器后得到的是中文,但插入到MYSQL数据库却成了“?”为什么?

所有回答列表(5)
adminf的gravatar头像
adminf  LV5 2016年6月21日
1、JSP页面乱码
  这种乱码的原因是应为没有在页面里指定使用的字符集编码,解决方法:只要在页面开始地方用下面代码指定字符集编码即可,
<%@ page contentType="text/html;charset=utf-8" language="java" %>

2、数据库乱码
  这种乱码会使你插入数据库的中文变成乱码,或者读出显示时也是乱码,解决方法如下:
  在数据库连接字符串中加入编码字符集
  String Url="jdbc:mysql://localhost/digitgulf?user=root&password=root&useUnicode=true&characterEncoding=GB2312";
  并在页面中使用如下代码:
  response.setContentType("text/html;charset=gb2312");
  request.setCharacterEncoding("gb2312");

3、中文作为参数传递乱码
  当我们把一段中文字符作为参数传递个另一页面时,也会出现乱码情况,解决方法如下:
  在参数传递时对参数编码,比如
  RearshRes.jsp?keywords=" + java.net.URLEncoder.encode(keywords)
  然后在接收参数页面使用如下语句接收
  keywords=new String(request.getParameter("keywords").getBytes("8859_1"));

  以上为现阶段遇到的乱码问题,乱码的核心问题还是字符集编码问题,只要掌握了这一点,一般的乱码问题都可以解决。
评论(0) 最佳答案
遇见,的gravatar头像
遇见,  LV36 2016年6月21日

mysql下

SHOW VARIABLES LIKE '%char%';

找一下除了filesystem哪个不是utf8

把不是的改成utf8就行了

最代码官方的gravatar头像
最代码官方  LV167 2016年6月21日

正好在csdn上看到一篇博客,解决的正好是你遇到的问题。

 

今天遇到的问题使MySQL中插入中文数据后显示乱码,我在mysql中插入中文的时候,可以插入可是select的时候却无法显示,为此我写下这篇博客用于解决mysql插入中文。

    由于有些截图没有记录下来,但是为了说明问题,我借用了别人的图,主要是为了完整的描述问题,在没有任何修改的时候,我们可以在mysql命令行中敲入以下指令,其结果如下所示:

show variables like 'character%';  

可以看到,以上的编码并不支持中文,所以我们需要改变他们的编码(我这里是改成了utf8格式的)以支持中文,修改步骤如下:

修改以后,关闭mysql服务(net stop mysql),然后再重新启动mysql服务(net start mysql),注意以上的修改不要出错,否则你在重新启动mysql的时候会出现系统错误,错误号为1067(若是出现了可以说明是你在修改的过程中出错了,检查一下你的修改)。修改好了以后,我再次使用 show variables like 'character%';命令查看了一下,显示如下:

可以看到编码基本都转换为了utf8格式的,于是我使用了以下指令(切换数据库)

ues test  

然后我创建了新表,但是插入中文的时候出现了错误,原因下图中也是可以看出的,有一项的格式又变回了 latin1 格式

 

原因是我们的修改对test数据库无效(应该是可以修改的,这就留给细心的你们了),于是我新创建了一个数据库:

可以看到新的数据库的数据格式,我感觉这回应该搞定了,下面我们来试试吧!

哈哈,搞定!

原文:http://blog.csdn.net/zr1076311296/article/details/51726565

参考资料

http://www.zuidaima.com/share/k%E4%B9%B1%E7%A0%81-p1-s1.htm

http://www.zuidaima.com/question/k%E4%B8%AD%E6%96%87-p1-s1.htm

小汤姆的gravatar头像
小汤姆  LV11 2016年6月23日

乱码的问题,我总结就几点

检查发送以及接受的程序字符集是否一致,如果不一致需要进行转换形成一致,即可!

1.你的问题查看是否在提交到后台的时候已经是乱码了

2.后台接受是正确的,看看是否与mysql的字符集一致,如果不一致一样可以导致乱码,转换成相同字符集即可!

quanlin的gravatar头像
quanlin  LV9 2016年6月23日

很不错

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友