银行对接项目中有些参数不能传中文,中文需要转成unicode。方法整理如下
//根据unicode 转成中文
public static String unicodeByString(String unicode) {
StringBuffer string = new StringBuffer();String[] hex = unicode.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 String stringByUnicode(String string) {
StringBuffer unicode = new StringBuffer();
for (int i = 0; i < string.length(); i++) {
char c = string.charAt(i);
// 转换为unicode
unicode.append("\\u" + Integer.toHexString(c));
}
return unicode.toString();
}
测试样例:
public static void main(String[] args) throws Exception {
// String request="zhuliang";
//签名
// String sign1 = RSAEncryptUtil.MD5WithRSASign(request.getBytes("UTF-8"), getSignPrivateKey4Client(signPrivatePath));
// String sign1 = RSAEncryptUtil.MD5WithRSASign(request.getBytes("UTF-8"), getSignPrivateKey4Client(encryptPath));
// String sign1 = RSAEncryptUtil.MD5WithRSASign(request.getBytes("UTF-8"), getSignPrivateKey4Client(signPrivatePath));
// boolean falg = RSAEncryptUtil.MD5WithRSAVerify(request.getBytes("UTF-8"), decryptPath, sign1);
// System.out.println(sign1);
// System.out.println(falg);
// UserRegTest regTest = new UserRegTest();
// regTest.test5810();
String sre = "蒋先生";
String sre2 = stringByUnicode(sre);
String str1 = unicodeByString(sre2);
System.out.println(sre2);
System.out.println(str1);
}