中文字符乱码

来源:互联网 发布:拓维信息怎么样 知乎 编辑:程序博客网 时间:2024/05/02 00:09

问: 当用JDBC向数据库中插入数据或从数据库中提取数据时,为何有时中文字符会显示为乱码? 
答:
这个问题的实现通常与各个JDBC driver的实现有关. 目前大多数JDBC driver采用本地编码格式来传输中文字符,例如中文字符"0x4175"会被转成"0x41"和"0x75"进行传输. 因此我们需要对JDBC driver返回的字符以及要发给JDBC driver的字符进行转换. 
当用JDBC driver向数据库中插入数据时,需要先将Unicode转成native code; 当 JDBC driver从数据库中查询数据时,则需要将native code转换成Unicode. 下面给出了这两种转换的实现: 

String native2Unicode(String s) { 
if (s == null || s.length() == 0) { 
return null; 

byte[] buffer = new byte[s.length()]; 
for (int i = 0; i s.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); 


return new String(buffer, 0, j); 

除使用以上两个方法之外,有些JDBC driver如果对jdbc driver Manager设置了正确 的字符集属性,以上2个方法就不需要了. 

 

windows记事本可以将文件内容保存为以下四种编码方式:  
  1、ANSI,不用说了  
  2、UNICODE,头两个字节内容为   0xFF   0xFE,对应为   UTF-16LE  
  3、UNICODE   big   endian,文字同样为UNICODE编码,只是字节顺序同2相反,以   0xFE   0xFF   开头,对应为   UTF-16BE  
  4、UTF-8,这种编码方式在<JAVA核心技术   I>上面有讲述,头三个字节为0xEF   0xBB   0xBF,   对应为   UTF-8  
   
  处理过程中先读出前三个字节内容判断出编码方式,然后再进行转换。 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 学it找不到工作怎么办 血液里有微生物怎么办 机械硬盘不显示怎么办 六安建筑机械租赁公司怎么办 别墅楼梯太陡怎么办 不锈钢楼梯太陡怎么办 真皮白色鞋脏了怎么办 白色牛皮包脏了怎么办 白色羊皮鞋脏了怎么办 白色真皮染色了怎么办 白色漆皮鞋脏了怎么办 对鉴定结果不服怎么办 洗衣机入水口堵塞怎么办 华科办临时饭卡怎么办 血浆乳酸测定高怎么办 olay大红瓶过敏怎么办 饥一顿饱一顿怎么办 朝鲜人向去韩国怎么办? 我是超级大方脸怎么办 被精神病砍断四根筋怎么办 40小时不睡觉怎么办 边防转业军人安置不好怎么办 转业军人孩子读书怎么办玉环 军官证丢了怎么办 飞行学员停飞了怎么办 丹东港债券违约怎么办 对村党支部贿选怎么办 马自达2油耗高怎么办 马自达1.5油耗高怎么办 马自达5停产配件怎么办 期货账户休眠了怎么办 低于二本线怎么办 听力测试不过关怎么办 安装的天正过期怎么办 天正t20v4过期了怎么办 鸡肉菊花一起吃怎么办 孕妇误食马兰头怎么办 孕29周喉咙痛怎么办 哺乳期吃了当归怎么办 哺乳期喝了茶水怎么办 大人感染eb病毒怎么办