日期:2014-05-19  浏览次数:20880 次

JAVA字符编码问题
JAVA如何把这个十六进制字符串数组转换成汉字?

00 20 00 20

00 31 00 30 00 31


00 31 00 39 00 38 00 35 00 30 
00 37 00 32 00 37 00 8F

里面是性别,名族,日期



------解决方案--------------------
参考下这个帖子
http://topic.csdn.net/u/20070515/10/dbf0c19b-bce0-4614-aba5-53632938d8ba.html
------解决方案--------------------
String public String(byte[] bytes, String charsetName)
throws UnsupportedEncodingException构造一个新的 String,方法是使用指定的字符集解码指定的字节数组。新的 String 的长度是一个字符集函数,因此不能等于字节数组的长度。 
 当给定字节在给定字符集中无效的情况下,该构造方法无指定的行为。当需要进一步控制解码过程时,应使用 CharsetDecoder 类。 
参数:
 bytes - 要解码为字符的字节
 charsetName - 受支持的 charset 的名称 
 抛出: 
 UnsupportedEncodingException - 如果指定字符集不受支持
---------------------------
String类的一个构造方法,第二个参数指定你的bytes是什么字符集.
 
------解决方案--------------------
Java code

String HX = "BABAD7D6D7AABBBB";
byte[] b = new byte[HX.length()/2];
for(int i=0;i<HX.length();){
    int j = Integer.parseInt(HX.substring(i,i+2), 16);
    b[i/2]=(byte) j;
    i+=2;
}
try {
    System.out.println(new String(sb,"GB2312"));
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}