Java报文或者同步的数据有个别乱码情况的处理. (转)谈谈对Java中Unicode、编码的理解
从其它系统获取到的用户数据,1万多条数据有其中有2条数据是乱码形式,这种形式表现为最后一个字符和本身的分隔符组成了一个乱码
错误数据 : 220296|+|黄燕 鄚+|7|+|7|+|02220204
正确的数据:220534|+|杨萍|+|1|+|7|+|02220911
Java处理代码:
// 数据格式暂定 : 柜员号|柜员名称|柜员状态|柜员级别|所属机构号 String[] split = line.split(FeeSupport.FEE_DATA_SPLIT_REGEX); D5User teller = new D5User(); //个别用户数据存在乱码问题(测试数据中1万条里面有2条是乱码,行方核心系统生成的时候就是乱码) if(split.length<5){ //中文有问题,即柜员名称有问题. byte[] b1 = line.getBytes(FeeSupport.FEE_FILE_ENCODING_UTF8); split = new String(b1,"iso-8859-1").split(FeeSupport.FEE_DATA_SPLIT_REGEX); b1 = split[1].getBytes("iso-8859-1"); byte[] b2 =new byte[b1.length-1]; for(int i =0;i<b2.length;i++){ b2[i] = b1[i]; } teller.setUser_name(new String(b2,FeeSupport.FEE_FILE_ENCODING_UTF8)); }else{ if(TellerOrganSupport.isEmpty(split[1])){ //柜员名称 teller.setUser_name(TellerOrganSupport.USERNAME_DEFAULT); }else{ teller.setUser_name(split[1]); } }