Java是个好东西,写JAVA的感觉就是爽,可是在用到JAVA与数据库的时候,多半都会出现乱码的问题,特别是中文字符总是被强奸成为“?”,看到心理面多多少少有点难受。这也是我们被老外欺负,就因为这个软件是他们写的,对英语支持那里都是100%,可是我们的字符总是被他们耍皮球一样的扔过去扔过来。前面听说微软件出了个叫oneCare的杀毒,想拿来用用,居然提示说语言不支持,一个字“气”。
为了正确将中文字符插入到数据库中,我试了N多种方法:
1、把当前WEB页面的字符改成“ISO8859-1”,一运行,全成乱码,不行;
2、因为我用的是Struts,把struts-config.xml的字符编码从“gb2312”改为“ISO8859-1”,也不行,打印出来的也全是乱码;
3、到action页面把request的字符设成“gb2312”:request.setCharacterEncoding("ISO8859-1"),不行;
4、到action页面把request的字符设成“gb2312”:request.setCharacterEncoding("gb2312"),不行;
......
最后,在bean页面,加入一个字符转换函数:
String format2IS08859(String str) {
try {
//cname=new String(cname.getBytes("gb2312"));
str = new String(str.getBytes("ISO8859-1"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return str;
}
再在其它的getXXX函数里面把字符用这个函数转换一下,才能够OK使用。
public void setCname(String cname) {
cname=format2IS08859(cname);
this.cname = cname;
}
这个问题虽然解决了,但是我知道以后的工作量还大,因为不只有这么一个地方需要字符转换,如果能够一次性在那个地方设置一个字符,然后就OK了,这样就可以减少很多的工作量了。
为了正确将中文字符插入到数据库中,我试了N多种方法:
1、把当前WEB页面的字符改成“ISO8859-1”,一运行,全成乱码,不行;
2、因为我用的是Struts,把struts-config.xml的字符编码从“gb2312”改为“ISO8859-1”,也不行,打印出来的也全是乱码;
3、到action页面把request的字符设成“gb2312”:request.setCharacterEncoding("ISO8859-1"),不行;
4、到action页面把request的字符设成“gb2312”:request.setCharacterEncoding("gb2312"),不行;
......
最后,在bean页面,加入一个字符转换函数:
String format2IS08859(String str) {
try {
//cname=new String(cname.getBytes("gb2312"));
str = new String(str.getBytes("ISO8859-1"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return str;
}
再在其它的getXXX函数里面把字符用这个函数转换一下,才能够OK使用。
public void setCname(String cname) {
cname=format2IS08859(cname);
this.cname = cname;
}
这个问题虽然解决了,但是我知道以后的工作量还大,因为不只有这么一个地方需要字符转换,如果能够一次性在那个地方设置一个字符,然后就OK了,这样就可以减少很多的工作量了。