从外部文件获取的一个中文字符的GBK(如BDF0),如何在System.out.println()时输出它的中文汉字,如BDF0的汉字是“金”?谢谢~

解决方案 »

  1.   

    import java.io.UnsupportedEncodingException;public class Test5 {
        
        public static void main(String[] args) {
            String str = "BDF0";
            System.out.println(toGbkChar(str));
        }
        
        public static char toGbkChar(String gbkEncoding) {
            if(gbkEncoding == null || !gbkEncoding.matches("[0-9a-fA-F]{4}")) {
                throw new IllegalArgumentException("GBK encoding data error!");
            }
            return toGbkChar(Integer.parseInt(gbkEncoding, 16));
        }
        
        public static char toGbkChar(int num) {
            if(num < 0 || num > 0xffff) {
                throw new IllegalArgumentException("GBK encoding data error!");
            }
            byte[] bys = new byte[2];
            bys[0] = (byte)(num >> 8 & 0xff);
            bys[1] = (byte)(num & 0xff);
            return toGbkChar(bys);
        }
        
        public static char toGbkChar(byte[] bys) {
            if(bys == null || bys.length != 2) {
                throw new IllegalArgumentException("GBK encoding byte length must be 2");
            }
            String str = null;
            try {
                str = new String(bys, "gbk");
            } catch (UnsupportedEncodingException e) {
                throw new IllegalArgumentException("GBK encoding convert error!");
            }
            if(str == null) {
                throw new IllegalArgumentException("GBK encoding convert error!");
            }
            return str.charAt(0);
        }
    }
      

  2.   


    呀,输出是对的,看来我对汉字的各种编码还是没有很了解呀,若若问一句,这个判断
    if(gbkEncoding == null || !gbkEncoding.matches("[0-9a-fA-F]{4}"))
    是判断什么的,特别是“或”后面那一句判断。谢谢了。
      

  3.   

    正则表达式,判断gbkEncoding是否为四位的由0-9或不分大小写的a-f的字母组成