字符串编码格式相互转换Unicode --UTF-8 -- GBK

来源:互联网 发布:oracle导出整个数据库 编辑:程序博客网 时间:2024/06/10 23:00

1.从 Unicode 形式的字符串转换成对应的编码的特殊字符串。 如 “\u9EC4” to “黄”

  /**     * 从 Unicode 形式的字符串转换成对应的编码的特殊字符串。 如 "\u9EC4" to "黄".     * Converts encoded \\uxxxx to unicode chars     * and changes special saved chars to their original forms     *     * @param in     *        Unicode编码的字符数组。     * @param off     *        转换的起始偏移量。     * @param len     *        转换的字符长度。     * @param convtBuf     *        转换的缓存字符数组。     * @return 完成转换,返回编码前的特殊字符串。     */    public static String fromEncodedUnicode(char[] in, int off, int len) {        char aChar;        char[] out = new char[len]; // 只短不长        int outLen = 0;        int end = off + len;        while (off < end) {            aChar = in[off++];            if (aChar == '%') {                aChar = in[off++];                if (aChar == 'u') {                    // Read the xxxx                    int value = 0;                    for (int i = 0; i < 4; i++) {                        aChar = in[off++];                        switch (aChar) {                        case '0':                        case '1':                        case '2':                        case '3':                        case '4':                        case '5':                        case '6':                        case '7':                        case '8':                        case '9':                            value = (value << 4) + aChar - '0';                            break;                        case 'a':                        case 'b':                        case 'c':                        case 'd':                        case 'e':                        case 'f':                            value = (value << 4) + 10 + aChar - 'a';                            break;                        case 'A':                        case 'B':                        case 'C':                        case 'D':                        case 'E':                        case 'F':                            value = (value << 4) + 10 + aChar - 'A';                            break;                        default:                            throw new IllegalArgumentException("Malformed \\uxxxx encoding.");                        }                    }                    out[outLen++] = (char) value;                } else {                    if (aChar == 't') {                        aChar = '\t';                    } else if (aChar == 'r') {                        aChar = '\r';                    } else if (aChar == 'n') {                        aChar = '\n';                    } else if (aChar == 'f') {                        aChar = '\f';                    }                    out[outLen++] = aChar;                }            } else {                out[outLen++] = (char) aChar;            }        }        return new String(out, 0, outLen);    }

2.将字符串进行UTF-8/GBK编码

 URLEncoder.encode(String str,"UTF-8/GBK");//java.net.URLEncoder.encode(String s, String charsetName)

3.将UTF-8编码转为字符串

URLDecoder.decode(String str,"UTF-8/GBK");
0 0
原创粉丝点击