java 中文转GBK码

原文链接:https://www.cnblogs.com/lin2yatou/p/4362064.html

遇到一个需求,一个接口的调用时,需要将中文转成对应的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

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

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章