在安卓客户端有一个注册登录程序,注册的时候,输入用户名密码,客户端用GET方式把表单数据传到Servlet,然后Servlet通过 String name=request.getParameter("username");String password=request.getParameter("password");把用户名密码得到,之后执行SQL语句把用户名密码插入到MySql里边,整个过程就是这样,并且用户名和密码在只有数字字母组成的情况下,可以正常添加到数据库,那么问题来了,我在输入用户名为汉字的时候,插入到数据库就变成了方块,也就是乱码??。。怎么解决?我网上搜了好长时间,这个帖子说把什么什么设置成GBK,那个帖子说把什么什么设置成GB2312,另一子说把什么什么设置成UTF8,我都凌乱了,到底该怎么设置???我是一个小白,,有时候看不懂那些大神写的解决方法。。。好无奈。。我现在想知道,肯定是要添加转码之类的代码的对吧,那应该怎么添加???从客户端发送的时候就转码还是服务端接收到了再转码然后插入数据库??那么代码是什么。。。我的分只有5分,,所以全拿出来了。。
1、首先,从jsp到servlet的字符编码肯定得一直,这和数据库没关系。这一步从页面到后台,统一用UTF-8就行了。
2、你这问题没说明白哪块(jsp-servlet还是servlet-数据库)中文字符编码不对了。一般来说servlet是中文,到数据库中只要不是生僻字,一般不会乱码
你需要设置JSP中的字符编码,很简单,去myeclipse中的Windows中的Preperence里面,在上方的输入框中输入jsp,
然后设置Econding为UTF-8,以后你每次新建JSP页面就不用手动设置字符编码了,全部都是UTF8了,中文汉字完全兼容。很方便吧。。。
你最好把 提交方式换成post get方式提交就算是设置了jsp的编码 提交中文也是有问题的 需要在servlet的时候将字符串再处理一次
需要将字符串转换成字节数组 再new String()的方式设置一次编码new String()的时候传2个参数 一个字节数组和编码方式
转换字节数组的时候需要讲浏览器地址栏的编码也一起传进去
设置编码,统一改成UTF-8或者GB2312,而且看看你读入的时候是不是使用字节了,用字节读中文百分百乱码
楼主已经解决了。。这不是mysql的问题,我在安卓客户端发到servlet的中文就已经乱码了。,,那插到mysql肯定就是方块了啊。。。我就把客户端转码了一下,在servlet页面又转码了一下就好了