当用JDBC向数据库中插入数据或提取数据时,为何有中文显示乱码

 我来答
匿名用户
2011-01-15
展开全部
这个问题的实现通常与各个JDBCdriver的实现有关.目前大多数JDBCdriver采用本地编码格式来传输中文字符,例如中文字符"0x4175"会被转成"0x41"和"0x75"进行传输.因此我们需要对JDBCdriver返回的字符以及要发给JDBCdriver的字符进行转换.
当用JDBCdriver向数据库中插入数据时,需要先将Unicode转成nativecode;当JDBCdriver从数据库中查询数据时,则需要将nativecode转换成Unicode.下面给出了这两种转换的实现:
Stringnative2Unicode(Strings){
if(s==null||s.length()==0){
returnnull;
}
byte[]buffer=newbyte[s.length()];
for(inti=0;is.length();i++){if(s.charAt(i)>=0x100){
c=s.charAt(i);
byte[]buf=(""+c).getBytes();
buffer[j++]=(char)buf[0];
buffer[j++]=(char)buf[1];
}
else{
buffer[j++]=s.charAt(i);
}
}
returnnewString(buffer,0,j);
}
除使用以上两个方法之外,有些JDBCdriver如果对jdbcdriverManager设置了正确的字符集属性,以上2个方法就不需要了.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式