在开发时遇到一些 乱码问题 只是生僻字的乱码 如 燊 媗 这类
对方的数据库为 Oracle
字符集为
问题原因:对方数据库编码未知 由中间层传过来的数据格式为 utf-8 但生僻字的字符 会转为类似于unicode 如 燊 会转为 \u009f? 导致转换更换编号后一直存在问题
解决办法 : 在中间层取回来后 直接转为字节 让后转换为iso-8859-1 继而进行破碎重组 转换为utf-8 此时显示已经正确 但是还是一个单独的json串 转为单独的门诊病人对象后 返回到页面上 此时页面显示已经正常
代码展示:
System.out.println("returnMap" + returnMap);
try {
//输出的json 格式 为[{"PATIENTID":"SY00144840","PATIENTINID":"SY00144840","PATIENTNAME":"徐炜燊","GENDER":"2","AGE":"7","AGEFLAG":"1","DEPTCODE":"028804","WARDCODE":"028804","DIAGNOSIS":"1、重型地中海贫血"}]
System.out.println("测试输出utf" +new String(json.toString().getBytes("iso-8859-1"),"GBK"));
json =new String(json.toString().getBytes("iso-8859-1"),"GBK");
json=json.replace("[","").replace("]","");
DtoHisPatient a=JSONObject.parseObject(json,DtoHisPatient.class);
list.add(a);
returnMap.put("rows", a);
System.out.println("json 输出"+json);
return list;
}catch (UnsupportedEncodingException e) {
e.printStackTrace();
}