我在开发web应用时,在jsp页面中用jdbc访问数据库,在用setString(1,"头部")这一句时出现乱码,导致sql无法查询出正确的结果,想请教各位大哥,如何解决这个问题啊?
我试过,如果把“头部”改为英文的,数据库中的字段值也改成英文的就没问题。但如何在中文的时候也保持正确就解决不了了。
我试过用new Stirng()改变字符集也没办法
另:数据库编码GBK,页面utf8
我试过,如果把“头部”改为英文的,数据库中的字段值也改成英文的就没问题。但如何在中文的时候也保持正确就解决不了了。
我试过用new Stirng()改变字符集也没办法
另:数据库编码GBK,页面utf8
页面也改成GBK看看。
String dbString = new String(str.getByets("UTF-8"),"GBK");
setString(1,dbString)如果还不行,你就干脆把页面和你java程序的编码都修改成GBK的,总之他们的编码要统一。
1 先写个中文字符转换的类如codeToString()
代码如下:
public String codeToString(String str)
{
String s=str;
try{
byte tempB[]=s.getBytes("ISO-8859-1"); //如果还不行,就写出GBK
s=new String(tempB);
return s;
}
catch(Exception e)
{
return s;
}
2.对接受的字符进行转换
String str=codeToString(request.getParameter("parameter");
其中parameter参数是你的查询条件如“头部"
3.然后再进行查询操作。
new String("xxx".getBytes("iso-8859-1"),"GBK")也试过
效果不变,所以才感觉没法了,,,如果改页面的编码的话,会改很多其他的东西,,是当初没设计好。。
不知还有其他办法没有呢?
现在主要问题就是出现在参数传给sql端后,出现乱码,,,我查过sql的setString()方法也没有设编码的参数不知有没有方法能打印出传到sql端的参数呢????
还有一点忘说了
这程序在本地测试没问题,,
问题是在上传到了unix的服务器上出错的
是不是两系统对中文的编码方式不同造成的啊。。?
我把“头部”单独定义成了一个变量,再调就没问题了
估计是不是unix再解析中文的时候将引号同内容一起解析进去了,所以形成了乱码
我把“头部”单独定义成了一个变量,再调就没问题了
估计是不是unix再解析中文的时候将引号同内容一起解析进去了,所以形成了乱码