大神们,小弟遇到一个问题,纠结了好久没做出来,希望路过的朋友能提供点帮助,不胜感激!
是这样的,在某个JSP页面中,我要完成回贴功能,这个JSP页面的编码为GB2312,在这个页面上两个输入框,分别记录回帖的标题和内容,我把这两个输入框的内容传给本页上的JavaScript,然后在JS中用xmlHttpRequest对象把这些内容传递到一个Servlet中,这个Servlet通过request对象获取回帖标题和内容,并把它们写入数据库,数据库编码是GBK,试了好多方法,写进去的一直是乱码。刚学JSP,望高手们帮忙!
是这样的,在某个JSP页面中,我要完成回贴功能,这个JSP页面的编码为GB2312,在这个页面上两个输入框,分别记录回帖的标题和内容,我把这两个输入框的内容传给本页上的JavaScript,然后在JS中用xmlHttpRequest对象把这些内容传递到一个Servlet中,这个Servlet通过request对象获取回帖标题和内容,并把它们写入数据库,数据库编码是GBK,试了好多方法,写进去的一直是乱码。刚学JSP,望高手们帮忙!
还有你的数据库是mysql,还是oracle,还是其他的?
另给个建议:
mysql的话,数据库编码建议使用gb2312
而页面编码,tomcat等服务器,程序中的转码都建议统一为utf-8
public String transChinese(String str){
String s=str;
try{
byte temp[]=s.getBytes("ISO-8859-1");
s=new String(temp);
return s;
}catch(Exception e){
return s;
}
}
注意!一定要两次!以下是我的部分代码
var url = "/sxzlc/messageboard/adminReply.action?id=" + prefixID+"&muReplay="+muReply;
url=encodeURI(url);
url=encodeURI(url);
var url = servlet地址?参数名=中文参数值;
url = encodeURI(url);
然后在servlet中再对参数进行解码,如:
String str = new String(参数名.getBytes("ISO-8859-1"), "gb2312");
不过我强烈建议你JSP页面、数据库等所有的地方的编码方式都设置为UTF-8,就算不设置为UTF-8也要把所有的编码统一为一种。
难道是我记错了!
url编码的格式 好像是 %A2%B5这种东西
和utf-8 gbk 不是一个东西
哪来的gbk utf-8 iso88590