oracle数据库字符集US7ASCII,在java中处理中文问题

来源:互联网 发布:天津大学软件工程学院 编辑:程序博客网 时间:2024/05/29 17:02
原来项目中oracle数据库一直是US7ASCII,我新项目对接的时候,查询以及插入中文,出现乱码问题。

暂时未能解决此问题,最终决定每次转码:

查询的时候:

1 List<Record> list = Db.use("oracle").find("select * from order order by id desc");2         for (Record record : list) {3             String str = record.getStr("department");4             String ss = "";5             if(str!=null)6                 ss = ArticleUtil.convert(str,"gbk");7             record.set("department",ss );8         }

关于转码的操作:

1 public static String convert(String str,String charsetName){2         String result = "未识别";3         try {4             result = new String(str.getBytes("ISO-8859-1"),charsetName);5         } catch (UnsupportedEncodingException e) {6             e.printStackTrace();7         }8         return result;9     }

插入和更新的时候,处理中文:

public void testSave(){        String username = getPara("username");        String password = getPara("password");        String department = getPara("department");        try {            department=new String(department.getBytes("gbk"),"iso-8859-1");        } catch (UnsupportedEncodingException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        Record r = new Record().set("department",department)                .set("username",username).set("password",password);        Db.use("oracle").save("user", r);        renderJson();    }

也就是说,当读取的时候,从数据中得到中文字符,然后以iso-8859-1 encode,再以gbk decode来正确显示中文,

当写入的时候,需要将中文字符 以gbk encode,再以iso-8859-1 decode,写入数据库。

0 0
原创粉丝点击