`

Ejb中的字符编码转换问题

    博客分类:
  • EJB
EJB 
阅读更多
我们在使用Ejb时,有时候读取出来的数据或者往数据库中插入数据时显示为乱码,这真是件让人郁闷的事,不过最近我找了一种很好处理的方法,也供给大家参考下:
如果要将数据从数据库中读出来的时候要将编码从ISO8859_1转换为GBK:就调用ISO2GBK(String a)方法。
如果是将数据插入到数据库中就将编码从GBK转换为ISO8859_1:就调用GBK2ISO(String b)方法。

public class EncodingConvert {
  public String ISO2GBK(String s){
       String ns = null;
       if (s == null)
           return ns;

       byte[] nbyte = s.getBytes();
       //先判断是否为GBK编码,是就不用转了
       if(nbyte.length>1 && isGBK(nbyte[0],nbyte[1]))
           return s;

       //转码
       try {
           ns = new String(s.getBytes("iso8859_1"), "GBK");
       } catch (UnsupportedEncodingException ex) {
           ex.printStackTrace();
       }
       return ns;
   }

   /**
    * 将字符串从GBK转换成ISO
    * @param s String
    * @return String
    */

   public String GBK2ISO(String s){
       String ns = null;
       if (s == null)
           return ns;
       byte[] nbyte = s.getBytes();
       //先判断是否为GBK编码,不是就不用转了
       if(nbyte.length>1 && (!isGBK(nbyte[0],nbyte[1])))
           return s;

       try {
           ns = new String(s.getBytes("gbk"), "ISO-8859-1");
       } catch (UnsupportedEncodingException ex) {
           ex.printStackTrace();
       }
       return ns;
   }

   /**
    *
    * 判断字符串是否是GBK编码
    * @param head byte
    * @param tail byte
    * @return boolean
    */
   public boolean isGBK( byte head,byte tail ){
       int iHead = head & 0xff;
       int iTail = tail & 0xff;
       return ((iHead>=0x81 && iHead<=0xfe &&
                (iTail>=0x40 && iTail<=0x7e ||
                 iTail>=0x80 && iTail<=0xfe)) ? true : false);
   }

   /**
    * 判断字符串是否为GB2312编码
    *
    * @param head byte
    * @param tail byte
    * @return boolean
    */
   public boolean isGB2312( byte head,byte tail ){
       int iHead = head & 0xff;
      int iTail = tail & 0xff;
      return ((iHead>=0xa1 && iHead<=0xf7 &&
               iTail>=0xa1 && iTail<=0xfe) ? true : false);
   }

}
分享到:
评论

相关推荐

    Java Bean实现字符编码转换程序.rar

    Java实现的字符编码转换程序,基于Bean的封装实现,程序通过Client触发调用Bean方法,取得Home对象的引用,然后用EJB生成库Home生成EJB对象,调用EJB对象方法printHelloWorld(),EJB对象把调用委派给Bean,同时程序...

    java面试题大全--java基础,struts,spring,ejb等

    8.编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。 9.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。 10.找出下列代码可能存在的错误,并说明原因: 二、JSP&Servlet...

    java面试宝典

    55、编码转换:怎样将GB2312 编码的字符串转换为ISO-8859-1 编码的字符串? 14 56、写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔。 14 59、Java 编程,打印昨天的当前时刻。 15 60、java 和...

    千方百计笔试题大全

    55、编码转换:怎样将GB2312 编码的字符串转换为ISO-8859-1 编码的字符串? 14 56、写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔。 14 59、Java 编程,打印昨天的当前时刻。 15 60、java 和...

    JAVA面试题最全集

    编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。 9.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。 10.找出下列代码可能存在的错误,并说明原因: 二、JSP&Servlet...

    java面试题

    84.2. 我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 106 84.3. 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。以下程序使用...

    java基础题 很全面

    2. 我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 30 3. 请问输出什么,为什么? 30 4. 编程题: 写一个Singleton出来。 31 5. 设计4个线程,其中两个线程每次对j...

    Java面试宝典2010版

    19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,...

    最新Java面试宝典pdf版

    19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 90 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序...

    Java面试笔试资料大全

    19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 90 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序...

    java 面试题 总结

    但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。 21、...

    超级有影响力霸气的Java面试题大全文档

    但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理, EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。 24、...

    java源码包2

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    JAVA面试宝典2010

    19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 90 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序...

    Java面试宝典-经典

    19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 90 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序...

    java面试题大全(2012版)

    19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 90 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序...

    Java面试宝典2012版

    19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 90 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序...

    java面试宝典2012

    19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 98 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序...

    Java面试宝典2012新版

    19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 90 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序...

Global site tag (gtag.js) - Google Analytics