`
收藏列表
标题 标签 来源
native2ascii java, asc
/**
 * 
 * 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[])
	{
		System.out.println(ascii2Native("\u521d\u59cb\u5316,\u5728\u529e\u7406,\u5ba1\u6838\u4e2d,\u6302\u8d77\u6001,\u5df2\u5b8c\u6210,\u5df2\u7ed3\u675f"));
		System.out.println(native2Ascii("已停止"));
	}
}
Global site tag (gtag.js) - Google Analytics