短信中的的 UCS2的编码与解码方法(java)

来源:互联网 发布:内衣淘宝店铺名字大全 编辑:程序博客网 时间:2024/04/29 22:10

最近,做一个关于SMS的程序,需要对中文部分进行UCS编码,这里用了两个函数,可以将短信中的UCS2字符串在UCS2和GBK之间装换。记录以下代码:

    /**     * UCS2解码     *      * @param src     *            UCS2 源串     * @return 解码后的UTF-16BE字符串     */    public static String DecodeUCS2(String src) {        byte[] bytes = new byte[src.length() / 2];        for (int i = 0; i < src.length(); i += 2) {            bytes[i / 2] = (byte) (Integer                    .parseInt(src.substring(i, i + 2), 16));        }        String reValue;        try {            reValue = new String(bytes, "UTF-16BE");        } catch (UnsupportedEncodingException e) {            throw new PduDecodeException(e);        }        return reValue;    }    /**     * UCS2编码     *      * @param src     *            UTF-16BE编码的源串     * @return 编码后的UCS2串     */    public static String EncodeUCS2(String src) {        byte[] bytes;        try {            bytes = src.getBytes("UTF-16BE");        } catch (UnsupportedEncodingException e) {            throw new PduEncodeException(e);        }        StringBuffer reValue = new StringBuffer();        StringBuffer tem = new StringBuffer();        for (int i = 0; i < bytes.length; i++) {            tem.delete(0, tem.length());            tem.append(Integer.toHexString(bytes[i] & 0xFF));            if(tem.length()==1){                tem.insert(0, '0');            }            reValue.append(tem);        }        return reValue.toString().toUpperCase();    }
0 0