我们在使用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的封装实现,程序通过Client触发调用Bean方法,取得Home对象的引用,然后用EJB生成库Home生成EJB对象,调用EJB对象方法printHelloWorld(),EJB对象把调用委派给Bean,同时程序...
8.编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。 9.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。 10.找出下列代码可能存在的错误,并说明原因: 二、JSP&Servlet...
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 和...
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。 9.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。 10.找出下列代码可能存在的错误,并说明原因: 二、JSP&Servlet...
84.2. 我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 106 84.3. 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。以下程序使用...
2. 我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 30 3. 请问输出什么,为什么? 30 4. 编程题: 写一个Singleton出来。 31 5. 设计4个线程,其中两个线程每次对j...
19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,...
19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 90 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序...
19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 90 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序...
但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。 21、...
但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理, EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。 24、...
在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...
19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 90 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序...
19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 90 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序...
19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 90 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序...
19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 90 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序...
19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 98 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序...
19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 90 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序...