今天在开发项目的时候,第三方提供的接口返回的数据是经过Unicode编码的,我们使用的时候多有不便,所以经过代码将Unicode解码才能使用,故记录一下使用Java进行Unicode和中文的互转。通常我们在安全优先级不是特别高但是又不想使用明文的情况下就可以使用这中方式进行加密、解密。
加密:将中文字符转换成Unicode字符
/**
* @Title: unicodeEncode
* @Description: 将中文字符转换成Unicode字符
* @param string
* @return
*/
public static String unicodeEncode(String string) {
char[] utfBytes = string.toCharArray();
String unicodeBytes = "";
for (int i = 0; i < utfBytes.length; i++) {
String hexB = Integer.toHexString(utfBytes[i]);
if (hexB.length() <= 2) {
hexB = "00" + hexB;
}
unicodeBytes = unicodeBytes + "\\u" + hexB;
}
return unicodeBytes;
}
解码:将Unicode的编码转换为中文da文章来源:https://www.toymoban.com/news/detail-641820.html
/**
* @param string
* @return 转换之后的内容
* @Title: unicodeDecode
* @Description: 将Unicode的编码转换为中文
*/
public static String unicodeDecode(String string) {
Pattern pattern = Pattern.compile("(\\\\u(\\p{XDigit}{4}))");
Matcher matcher = pattern.matcher(string);
char ch;
while (matcher.find()) {
ch = (char) Integer.parseInt(matcher.group(2), 16);
string = string.replace(matcher.group(1), ch + "");
}
return string;
}
单元测试:可以看到只有中文会加密、解码。英文是不影响的。文章来源地址https://www.toymoban.com/news/detail-641820.html
public static void main(String[] args) {
String str = "你好,hello word";
// 加密 中文 -> Unicode
String unicodeEncode = unicodeEncode(str);
System.out.println(str + " ---> " + unicodeEncode);
// 解码 Unicode -> 中文
String zh_str = unicodeDecode(unicodeEncode);
System.out.println(unicodeEncode + " ---> " + zh_str);
}
到了这里,关于Java Unicode和中文编码转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!