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

原来项目中oracle数据库一直是US7ASCII,我新项目对接的时候,查询以及插入中文,出现乱码问题。

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

查询的时候:

oracle数据库字符集US7ASCII,在java中处理中文问题
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         }
oracle数据库字符集US7ASCII,在java中处理中文问题

关于转码的操作:

oracle数据库字符集US7ASCII,在java中处理中文问题
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     }
oracle数据库字符集US7ASCII,在java中处理中文问题

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

oracle数据库字符集US7ASCII,在java中处理中文问题
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();
    }
oracle数据库字符集US7ASCII,在java中处理中文问题

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

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


本文转自Ryan.Miao博客园博客,原文链接:http://www.cnblogs.com/woshimrf/p/4775501.html,如需转载请自行联系原作者
上一篇:保护公民个人信息安全还需要做什么


下一篇:[Servlet&JSP] Cookie会话管理