`
soulshard
  • 浏览: 102806 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Native2Ascii和Ascii2Native的Java实现

阅读更多
下午同事说要一个Native2Ascii和Ascii2Native的Java实现,Google了半天发现有的是错误的实现,有的只有Native2Ascii没有Ascii2Native,有的又是其他语言实现的,干脆自己参考着写了一个。
package util;

/**
 * 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;
	}

}
分享到:
评论
3 楼 fair_jm 2014-04-15  
嗯 代码可以用 多谢lz
2 楼 808_小星星 2012-04-09  
      
1 楼 ffychina 2009-10-31  
thank for lz the dedicating unselfishly. this class is very useful to me.

相关推荐

    native2ascii.exe

    在Java平台上,由于Java源代码和资源文件默认使用ASCII编码,因此当遇到非ASCII字符时,就需要使用像`native2ascii.exe`这样的工具进行转换。 在描述中提到,`native2ascii.exe`依赖于`java.dll`动态链接库和其他...

    native2ascii简介

    `native2ascii` 是Sun Java SDK中的一个实用工具,主要用于将包含非ASCII字符的文本文件(如`.txt`、`.ini`、`.properties`、`.java`等)转换为Unicode编码格式。在软件开发过程中,特别是在处理国际化(i18n)需求...

    native2ascii图形工具

    在Java国际化和本地化的过程中,`native2ascii`工具起到了关键作用。它帮助开发者处理那些包含特殊字符(如非英文字符)的资源文件,确保这些文件能在不同的系统和语言环境中正确显示。通过创建图形化工具,这个过程...

    native2ascii工具

    native2ascii工具,不需要在命令行的转换了

    native2ascii 命令的使用

    `native2ascii`命令是Java开发中用于处理非ASCII字符的一种工具,主要用于将含有非英文字符(如中文、日文等)的文本文件转换为Unicode编码的ASCII格式,以便Java虚拟机(JVM)能够正确识别和处理。这个命令对于国际...

    Native2Ascii(Ascii2Native)

    Native2Ascii(Ascii2Native) Native2Ascii(Ascii2Native)

    native2ascii图形界面工具

    8. **native2ascii.jar**:原生的`native2ascii`工具的Java实现,通常位于Java SDK的bin目录下,主要用于命令行操作。 总的来说,这个压缩包提供了一个基于SWT的图形化版本的`native2ascii`工具,以及其运行所需的...

    在线native2ascii。方便很多

    总的来说,"在线native2ascii"是一个提高Java开发效率的实用工具,通过在线方式简化了非ASCII字符转换的过程,使得开发者可以更专注于编写和调试代码,而不是处理编码问题。结合博客文章,我们可以深入理解这个工具...

    mytest native2ascii java

    mytest native2ascii javamytest native2ascii javamytest native2ascii java

    native2ascii

    总的来说,`native2ascii`工具是Java开发中处理非ASCII字符,尤其是中文字符的关键组件,它可以确保`.properties`文件在不同系统和环境下正确显示内容。配合MyEclipse这样的IDE插件,开发者可以更便捷地管理和使用...

    Eclipse 属性文件解析插件native2ascii

    2、将附件下的native2ascii.link 文件放在\Eclipse6.0.1\eclipse\links目录下,然后配置path=D:\\Program Files\\Eclipse6.0.1\\eclipse\\plugins\\native2ascii 即1所放置的native2ascii 文件夹位置,根据实际路径...

    native2ascii.exe java的转码工具

    1. 资源文件:在创建Java国际化的资源文件(如`.properties`)时,`native2ascii.exe`用于将非ASCII字符转换为Unicode转义序列,保证资源文件在不同操作系统和编码环境下都能正确读取。 2. 字符串常量:当Java代码...

    Native2Ascii

    把文字编码变成统一的Unicode编码工具 Native Ascii 编码 本地 Java

    native2ascii_local

    通过在线native2ascii转换而成的html可以在本地直接使用,将需要的转换成unicode

    Native2Ascii互转换工具

    用C#编写的Native和Ascii转换工具,这只是用几分钟写的初版. "设置"按钮还没有想好添加什么功能. 目前程序是置顶的,窗体大小可以改变. 现在只有文本框内容转换,后续会添加文件转换和批量文件转换. 有什么建议可以写在...

    native2ascii资源文件编码转换命令

    native2ascii资源文件编码转换命令

Global site tag (gtag.js) - Google Analytics