下午同事说要一个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;
}
}
分享到:
相关推荐
native2ascii简介native2ascii简介native2ascii简介native2ascii简介
native2ascii工具,不需要在命令行的转换了
Native2Ascii(Ascii2Native) Native2Ascii(Ascii2Native)
mytest native2ascii javamytest native2ascii javamytest native2ascii java
使用native2ascii进行编码格式转换 将CN.properties国际化资源文件 转换为 简体中文 控制台命令: native2ascii -reverse -encoding gbk CN.properties CN2.properties
把文字编码变成统一的Unicode编码工具 Native Ascii 编码 本地 Java
基于JDK的native2ascii的编码转换图形工具
通过在线native2ascii转换而成的html可以在本地直接使用,将需要的转换成unicode
native2ascii.exe java的转码工具,需要java.dll动态库和相关程序才能执行.
2、将附件下的native2ascii.link 文件放在\Eclipse6.0.1\eclipse\links目录下,然后配置path=D:\\Program Files\\Eclipse6.0.1\\eclipse\\plugins\\native2ascii 即1所放置的native2ascii 文件夹位置,根据实际路径...
native2ascii图形界面工具,简单易用
用C#编写的Native和Ascii转换工具,这只是用几分钟写的初版. "设置"按钮还没有想好添加什么功能. 目前程序是置顶的,窗体大小可以改变. 现在只有文本框内容转换,后续会添加文件转换和批量文件转换. 有什么建议可以写在...
native2ascii使用参考
native2ascii资源文件编码转换命令
偶没有装JDK,所以也无法使用JDK自带的实用工具native2ascii.exe,这是一个仿制工具,仅供JAVA加载资源文件时将汉字转换为UNICODE编码用;
用java写的中文字符转unicode码程序,功能类似于JDK里面的native2ascii,但是是图形界面,非常好用。
博文链接:https://hepeng1688.iteye.com/blog/139941
native2ascii.exe java的转码工具,需要java.dll动态库和相关程序才能执行.
NULL 博文链接:https://defrag-sly.iteye.com/blog/994708