java.net.URLEncoder.encode(String.valueOf(ch[i]),"UTF-8");
这样写不能解决实际问题,因为它会把非中文字母也转成乱码。所以特此写了一个比较笨的方法,
按字符转译,遍历字符串,如果遇到中文,就将它转译成UTF-8的格式。
/**
* 将字符串转换为UTF-8格式* @param str
* @return
*/
public static String transcoding(String str ) {
char[] ch = str.toCharArray();
for (int i = 0; i < ch.length; i++) {
char c = ch[i];
if (isChinese(c)) {
String string = null;
try {
string = java.net.URLEncoder.encode(String.valueOf(ch[i]),"UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
str = str.replaceAll(String.valueOf(c), string);
}
}
return str;
}
private static final boolean isChinese(char c) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {
return true;
}
return false;
}