您的位置:首页 > 其它

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

2016-08-12 10:33 465 查看
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");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐