java 中文转GBK码

 

遇到一个需求,一个接口的调用时,需要将中文转成对应的GBK码,然后发请求调用,大概搜了下,貌似没有简单可行的现成方法,不像python能够直接decode / encode。

找的时候有一个帖子给了启示: java默认用Unicode存储String,所以直接转成某种编码的byte的同时,就已经转成了该编码的encoding。

于是找了个例子,

天安门 对应的gbk码是: %CC%EC%B0%B2%C3%C5

于是转一下

byte[] bytes = source.getBytes("GBK");

再计算下补码(还是反码)神马的。

for(byte b : bytes) {
sb.append("%" + Integer.toHexString((b & 0xff)).toUpperCase());
}

就得到了上述的CC EC B0 B2 C3 C5

按照格式塞进去百分号,大功告成。完整的函数如下:

 

 

1     public static String toGBK(String source) throws UnsupportedEncodingException {
2         StringBuilder sb = new StringBuilder();
3         byte[] bytes = source.getBytes("GBK");
4         for(byte b : bytes) {
5             sb.append("%" + Integer.toHexString((b & 0xff)).toUpperCase());
6         }
7         
8         return sb.toString();
9     }

 

posted on 2015-03-24 10:31  林南  阅读(8750)  评论(1编辑  收藏  举报

导航