java代码实现的jdk工具native2ascii.exe

来源:互联网 发布:有人转让我的淘宝店铺 编辑:程序博客网 时间:2024/06/05 14:40

分享个java实现的native2ascii.exe的转换工具,很有用。


package com.zuidaima;/** * native2ascii.exe Java code implementation. *  * @author * @version 1.0 */public class Native2AsciiUtils {/** * prefix of ascii string of native character */private static String PREFIX = "\\u";/** * Native to ascii string. It's same as execut native2ascii.exe. *  * @param str *            native string * @return ascii string */public static String native2Ascii(String str) {char[] chars = str.toCharArray();StringBuilder sb = new StringBuilder();for (int i = 0; i < chars.length; i++) {sb.append(char2Ascii(chars[i]));}return sb.toString();}/** * Native character to ascii string. *  * @param c *            native character * @return ascii string */private static String char2Ascii(char c) {if (c > 255) {StringBuilder sb = new StringBuilder();sb.append(PREFIX);int code = (c >> 8);String tmp = Integer.toHexString(code);if (tmp.length() == 1) {sb.append("0");}sb.append(tmp);code = (c & 0xFF);tmp = Integer.toHexString(code);if (tmp.length() == 1) {sb.append("0");}sb.append(tmp);return sb.toString();} else {return Character.toString(c);}}/** * Ascii to native string. It's same as execut native2ascii.exe -reverse. *  * @param str *            ascii string * @return native string */public static String ascii2Native(String str) {StringBuilder sb = new StringBuilder();int begin = 0;int index = str.indexOf(PREFIX);while (index != -1) {sb.append(str.substring(begin, index));sb.append(ascii2Char(str.substring(index, index + 6)));begin = index + 6;index = str.indexOf(PREFIX, begin);}sb.append(str.substring(begin));return sb.toString();}/** * Ascii to native character. *  * @param str *            ascii string * @return native character */private static char ascii2Char(String str) {if (str.length() != 6) {throw new IllegalArgumentException("Ascii string of a native character must be 6 character.");}if (!PREFIX.equals(str.substring(0, 2))) {throw new IllegalArgumentException("Ascii string of a native character must start with \"\\u\".");}String tmp = str.substring(2, 4);int code = Integer.parseInt(tmp, 16) << 8;tmp = str.substring(4, 6);code += Integer.parseInt(tmp, 16);return (char) code;}public static void main(String[] args) {String uni = "\u5185\u5bb9ID\u4e0d\u80fd\u4e3a\u7a7a";System.out.println(ascii2Native(uni));}}    

代码地址:http://www.zuidaima.com/share/1550463464180736.htm

0 0
原创粉丝点击