Oracle保存中文数据和读取数据页面显示乱码解决方案

来源:互联网 发布:photozoom pro mac 编辑:程序博客网 时间:2024/06/05 02:08

        关于在Oracle数据库中保存中文字段属性和最后页面显示中文字符,之前遇到过一次,后来一直用MySQL就遇到的不多了,其实是我写的项目不多啦,也没成体系,很多情况下都是改他们写好的代码,所以那些这些中文字符问题在初期就解决完了。这次又着手自己写项目了。就遇到问题了。

        首先数据时在PL/SQL Developer客户端录入的,中文字段是username,然后在页面上查询显示时这个字段就显示乱码了,记得以前老师说过要1.数据库 2.java代码 3.页面显示的编码格式都统一(GBK 、 UTF-8)了,就不会乱码,调试后还是不行。写了录入方法保存信息,从页面存入的中文信息数据库也显示乱码。搞了好一阵子也没弄好;最后问老前辈得到有效解决办法,他们之前写到的字符转换类。

页面保存至数据库 gbk2iso

public static String gbtoiso(String strgb) {String striso = null;try {striso = new String(strgb.getBytes("GBK"), "iso-8859-1");} catch (UnsupportedEncodingException e) {// log.info(e.getMessage());} catch (Exception e) {// log.info(e.getMessage());}return striso;}

读取数据库中的信息显示到页面

public static String isotogb(String striso) {String strgb = null;try {if (striso != null && !striso.equals("null"))strgb = new String(striso.getBytes("iso-8859-1"), "GBK");elsestrgb = "";} catch (UnsupportedEncodingException e) {log.info(e.getMessage());}return strgb;}

上面的方法只需要在保存或查询过程中把中文属性过滤即可,例:

查询转换

public List findDBAll(){List list = dbrwjkxxDAO.findAll();//工具类引用到本类                for(int i  = 0; i < list.size() ; i++){            this.isotogb((DmDbrwjkxx)list.get(i));   }                //直接引用工具类                //((DmDbrwjkxx)list.get(i)).setUsername(MyUtil.isotogb(((DmDbrwjkxx)list.get(i)).getUsername()));                 return list; }

保存转换

public void saveDB(DmDbrwjkxx dbrw){dbrw.setUsername(MyUtil.gbtoiso(dbrw.getUsername()));dbrwjkxxDAO.save(dbrw);} 

其实归根结底就是输入的字符和数据库保存的字符一直即可,这里做了统一处理。还不清楚为什么存入数据库中时转成iso,待改天搞懂再来补上吧。

0 0
原创粉丝点击