这篇文章给大家介绍使用Java怎么将中文字符串与unicode进行转换,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序。
/** * 中文字符串和unicode互转工具类 <br> * * @author hkb <br> */ public class UnicodeConvertUtils { /** * 实现js的escape函数 * * @param input * 待传入字符串 * @return */ public static String escape(String input) { int len = input.length(); int i; char j; StringBuffer result = new StringBuffer(); result.ensureCapacity(len * 6); for (i = 0; i < len; i++) { j = input.charAt(i); if (Character.isDigit(j) || Character.isLowerCase(j) || Character.isUpperCase(j)) { result.append(j); } else if (j < 256) { result.append("%"); if (j < 16) { result.append("0"); } result.append(Integer.toString(j, 16)); } else { result.append("%u"); result.append(Integer.toString(j, 16)); } } return result.toString(); } /** * 实现js的unescape函数 * * @param input * 待传入字符串 * @return */ public static String unescape(String input) { int len = input.length(); StringBuffer result = new StringBuffer(); result.ensureCapacity(len); int lastPos = 0, pos = 0; char ch; while (lastPos < len) { pos = input.indexOf("%", lastPos); if (pos == lastPos) { if (input.charAt(pos + 1) == 'u') { ch = (char) Integer.parseInt(input.substring(pos + 2, pos + 6), 16); result.append(ch); lastPos = pos + 6; } else { ch = (char) Integer.parseInt(input.substring(pos + 1, pos + 3), 16); result.append(ch); lastPos = pos + 3; } } else { if (pos == -1) { result.append(input.substring(lastPos)); lastPos = len; } else { result.append(input.substring(lastPos, pos)); lastPos = pos; } } } return result.toString(); } /** * unicode转中文 * * @param input * 待传入字符串 * @return */ public static String toGb2312(String input) { input = input.trim().replaceAll("(?i)\\\\u", "%u"); return unescape(input); } /** * 中文字符串转unicode * * @param input * 待传入字符串 * @return */ public static String toUnicode(String input) { input = input.trim(); String output = escape(input).toLowerCase().replace("%u", "\\u"); return output.replaceAll("(?i)%7b", "{").replaceAll("(?i)%7d", "}").replaceAll("(?i)%3a", ":") .replaceAll("(?i)%2c", ",").replaceAll("(?i)%27", "'").replaceAll("(?i)%22", "\"") .replaceAll("(?i)%5b", "[").replaceAll("(?i)%5d", "]").replaceAll("(?i)%3D", "=") .replaceAll("(?i)%20", " ").replaceAll("(?i)%3E", ">").replaceAll("(?i)%3C", "<") .replaceAll("(?i)%3F", "?").replaceAll("(?i)%5c", "\\"); } /** * 测试 * * @param args */ public static void main(String[] args) { System.out.println(toUnicode("你好")); System.out.println(toGb2312("\u4f60\u597d")); // 等同于上面 System.out.println(toGb2312("\\u4f60\\u597d")); } }
关于使用Java怎么将中文字符串与unicode进行转换就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。