日期:2014-05-20  浏览次数:20774 次

Java 如何把gb2312对应的简体中文编码转化为汉字
数据库中某张表的一个字段存储的是gb2312格式的编码符号(如:bdadcbd5),在Java中怎样把它转化为其对应的汉字“江苏”并输出到页面上。希望路过的朋友能给点思路,提供一写好的解决方法。谢谢了!
------最佳解决方案--------------------


String string = "bdadcbd5";
byte[] bytes = new byte[string.length() / 2];
for(int i = 0; i < bytes.length; i ++){
byte high = Byte.parseByte(string.substring(i * 2, i * 2 + 1), 16);
byte low = Byte.parseByte(string.substring(i * 2 + 1, i * 2 + 2), 16);
bytes[i] = (byte) (high << 4 
------其他解决方案--------------------
 low);
}
System.out.println(new String(bytes, "gbk"));

------其他解决方案--------------------
先把这个16进制(看起来像),每两个字母转换为一个 byte 的这种方式,组装为一个 byte[] 数组。

然后:
  String str = new String(bytes, "GBK"); 
------其他解决方案--------------------
楼上的 ldh911 你好,先谢谢你给予帮助,可是还是不行,我是这样写的:
String string = "bdadcbd5";
byte[] bytes = string.getBytes("GBK");
String result = new String(bytes,"GBK");
System.out.println(bytes);
System.out.println(result);
输出结果是:
[B@de6ced
bdadcbd5
getBytes()这种方法不是可以把字符串按指定的编码格式转化为bytes数组吗?结果怎么是[B@de6ced,不知哪里错啦。我就是想把 bdadcbd5 转化为它对应的“江苏”两字。
呵呵,因为是新人,很多地方都不懂,希望能给点代码或者描述的更详细点。谢谢!