下午同事说要一个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;
}
}
分享到:
相关推荐
在Java平台上,由于Java源代码和资源文件默认使用ASCII编码,因此当遇到非ASCII字符时,就需要使用像`native2ascii.exe`这样的工具进行转换。 在描述中提到,`native2ascii.exe`依赖于`java.dll`动态链接库和其他...
`native2ascii` 是Sun Java SDK中的一个实用工具,主要用于将包含非ASCII字符的文本文件(如`.txt`、`.ini`、`.properties`、`.java`等)转换为Unicode编码格式。在软件开发过程中,特别是在处理国际化(i18n)需求...
在Java国际化和本地化的过程中,`native2ascii`工具起到了关键作用。它帮助开发者处理那些包含特殊字符(如非英文字符)的资源文件,确保这些文件能在不同的系统和语言环境中正确显示。通过创建图形化工具,这个过程...
native2ascii工具,不需要在命令行的转换了
`native2ascii`命令是Java开发中用于处理非ASCII字符的一种工具,主要用于将含有非英文字符(如中文、日文等)的文本文件转换为Unicode编码的ASCII格式,以便Java虚拟机(JVM)能够正确识别和处理。这个命令对于国际...
Native2Ascii(Ascii2Native) Native2Ascii(Ascii2Native)
8. **native2ascii.jar**:原生的`native2ascii`工具的Java实现,通常位于Java SDK的bin目录下,主要用于命令行操作。 总的来说,这个压缩包提供了一个基于SWT的图形化版本的`native2ascii`工具,以及其运行所需的...
总的来说,"在线native2ascii"是一个提高Java开发效率的实用工具,通过在线方式简化了非ASCII字符转换的过程,使得开发者可以更专注于编写和调试代码,而不是处理编码问题。结合博客文章,我们可以深入理解这个工具...
mytest native2ascii javamytest native2ascii javamytest native2ascii java
总的来说,`native2ascii`工具是Java开发中处理非ASCII字符,尤其是中文字符的关键组件,它可以确保`.properties`文件在不同系统和环境下正确显示内容。配合MyEclipse这样的IDE插件,开发者可以更便捷地管理和使用...
2、将附件下的native2ascii.link 文件放在\Eclipse6.0.1\eclipse\links目录下,然后配置path=D:\\Program Files\\Eclipse6.0.1\\eclipse\\plugins\\native2ascii 即1所放置的native2ascii 文件夹位置,根据实际路径...
1. 资源文件:在创建Java国际化的资源文件(如`.properties`)时,`native2ascii.exe`用于将非ASCII字符转换为Unicode转义序列,保证资源文件在不同操作系统和编码环境下都能正确读取。 2. 字符串常量:当Java代码...
把文字编码变成统一的Unicode编码工具 Native Ascii 编码 本地 Java
通过在线native2ascii转换而成的html可以在本地直接使用,将需要的转换成unicode
用C#编写的Native和Ascii转换工具,这只是用几分钟写的初版. "设置"按钮还没有想好添加什么功能. 目前程序是置顶的,窗体大小可以改变. 现在只有文本框内容转换,后续会添加文件转换和批量文件转换. 有什么建议可以写在...
native2ascii资源文件编码转换命令