您的位置:首页 > 移动开发 > Android开发

Android Java中将unicode的汉字码转换成utf-8格式的汉字

2017-04-21 10:29 639 查看
最近项目中跟后台的交互莫名其妙的String类型的全部都是”乱码”了。比如网络请求给后台post传递的参数中有一个String类型的参数,结果到了后台哪里接收到的就是”乱码”了,同样的,后台给返回回来的json数据,中也是全部”乱码”。问题是之前一直都好好的,有天突然发现这样的问题了。于是乎在跟后台撕逼了大半天没有结果后,大家各自找解决办法,最终android端找到了这种解决方案,今天来给记录分享一下。

首先这里说上面的”乱码”其实发现原来是unicode的编码方式。知道了这个后剩下的就是将其转换成我们所谓的汉字编码格式,也就是常见的UTF-8,下面是最终封装的一个工具类:

/**
*
* @author Nan
*
*/
public class UnicodeUtil {

/**
* 将utf-8的汉字转换成unicode格式汉字码
* @param string
* @return
*/
public static String stringToUnicode(String string) {

StringBuffer unicode = new StringBuffer();
for (int i = 0; i < string.length(); i++) {
char c = string.charAt(i);
unicode.append("\\u" + Integer.toHexString(c));
}
String str = unicode.toString();

return str.replaceAll("\\\\", "0x");
}

/**
* 将unicode的汉字码转换成utf-8格式的汉字
* @param unicode
* @return
*/
public static String unicodeToString(String unicode) {

String str = unicode.replace("0x", "\\");

StringBuffer string = new StringBuffer();
String[] hex = str.split("\\\\u");
for (int i = 1; i < hex.length; i++) {
int data = Integer.parseInt(hex[i], 16);
string.append((char) data);
}
return string.toString();
}

public static void main(String[] args) {
String str = "你好吗? How are you";
//String test2 = "0xu4f600xu597d0xu54170xuff1f0xu200xu480xu6f0xu770xu200xu610xu720xu650xu200xu790xu6f0xu75";
String unicode = stringToUnicode(str);
String string = unicodeToString(unicode);
System.out.println("转换成unicode格式的:\n"+unicode);
System.out.println("转换成汉字UTF-8格式的:\n"+string);
}

}


Android中给后台传递或者接收的时候直接调用,例如这里post传递string参数的时候可以这样写:

RequestParams params = new RequestParams();
params.addBodyParameter("title", UnicodeUtil.stringToUnicode(mEt.getText().toString()).trim());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息