标签:
前提:服务端使用的是.Net做的网站,安卓端则是使用Java语言开发的,再次期间使用的传输数据格式是Json格式
平时在做项目的时候都是使用的java语言开发的服务端,所以在传输数据的时候虽然也是使用Json格式,但是数据里面并没有进行Unicode编码,在这次做项目的时候,由于是使用C#语言开发的,而且传递的数据里面含有汉字的Unicode编码,这时就需要在客户端对此Unicode编码进行解码,我找了一下字符串的提供的方法,并没有找到直接对汉字进行解码的方法,于是就查找资料自己写了一个解码的工具类,如果各位朋友知道其他的解码方法,请给留言哈,相互学习!下面请看具体的源码:
package com.momo.exchangeserver;
/**
*
*
* @Description:解析含有Unicode汉字编码的字符串
* @author:
* @see:
* @since:
* @copyright ©
* @Date:2015-1-25
*/
public class DecodeUnicode {
/**
* 将Unicode编码解析成汉字
* @param pStr 包含(汉字的Unicode)编码的字符串
* @return
*/
public String decodeUnicode(String pStr) {
char aChar;
int len = pStr.length();
StringBuffer outBuffer = new StringBuffer(len);
for (int x = 0; x < len;) {
aChar = pStr.charAt(x++);
if (aChar == '\\') {
aChar = pStr.charAt(x++);
if (aChar == 'u') {
int value = 0;
for (int i = 0; i < 4; i++) {
aChar = pStr.charAt(x++);
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 encoding.");
}
}
outBuffer.append((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';
}
outBuffer.append(aChar);
}
} else {
outBuffer.append(aChar);
}
}
return outBuffer.toString();
}
}
标签:
原文地址:http://blog.csdn.net/u011131296/article/details/43112617