`
wbj0110
  • 浏览: 1600852 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Native2Ascii和Ascii2Native的Java实现

    博客分类:
  • Java
阅读更多

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

Java代码  收藏代码
  1. package util;  
  2.   
  3. /** 
  4.  * native2ascii.exe Java code implementation. 
  5.  *  
  6.  * @author 
  7.  * @version 1.0 
  8.  */  
  9. public class Native2AsciiUtils {  
  10.   
  11.     /** 
  12.      * prefix of ascii string of native character 
  13.      */  
  14.     private static String PREFIX = "\\u";  
  15.   
  16.     /** 
  17.      * Native to ascii string. It's same as execut native2ascii.exe. 
  18.      *  
  19.      * @param str 
  20.      *            native string 
  21.      * @return ascii string 
  22.      */  
  23.     public static String native2Ascii(String str) {  
  24.         char[] chars = str.toCharArray();  
  25.         StringBuilder sb = new StringBuilder();  
  26.         for (int i = 0; i < chars.length; i++) {  
  27.             sb.append(char2Ascii(chars[i]));  
  28.         }  
  29.         return sb.toString();  
  30.     }  
  31.   
  32.     /** 
  33.      * Native character to ascii string. 
  34.      *  
  35.      * @param c 
  36.      *            native character 
  37.      * @return ascii string 
  38.      */  
  39.     private static String char2Ascii(char c) {  
  40.         if (c > 255) {  
  41.             StringBuilder sb = new StringBuilder();  
  42.             sb.append(PREFIX);  
  43.             int code = (c >> 8);  
  44.             String tmp = Integer.toHexString(code);  
  45.             if (tmp.length() == 1) {  
  46.                 sb.append("0");  
  47.             }  
  48.             sb.append(tmp);  
  49.             code = (c & 0xFF);  
  50.             tmp = Integer.toHexString(code);  
  51.             if (tmp.length() == 1) {  
  52.                 sb.append("0");  
  53.             }  
  54.             sb.append(tmp);  
  55.             return sb.toString();  
  56.         } else {  
  57.             return Character.toString(c);  
  58.         }  
  59.     }  
  60.   
  61.     /** 
  62.      * Ascii to native string. It's same as execut native2ascii.exe -reverse. 
  63.      *  
  64.      * @param str 
  65.      *            ascii string 
  66.      * @return native string 
  67.      */  
  68.     public static String ascii2Native(String str) {  
  69.         StringBuilder sb = new StringBuilder();  
  70.         int begin = 0;  
  71.         int index = str.indexOf(PREFIX);  
  72.         while (index != -1) {  
  73.             sb.append(str.substring(begin, index));  
  74.             sb.append(ascii2Char(str.substring(index, index + 6)));  
  75.             begin = index + 6;  
  76.             index = str.indexOf(PREFIX, begin);  
  77.         }  
  78.         sb.append(str.substring(begin));  
  79.         return sb.toString();  
  80.     }  
  81.   
  82.     /** 
  83.      * Ascii to native character. 
  84.      *  
  85.      * @param str 
  86.      *            ascii string 
  87.      * @return native character 
  88.      */  
  89.     private static char ascii2Char(String str) {  
  90.         if (str.length() != 6) {  
  91.             throw new IllegalArgumentException(  
  92.                     "Ascii string of a native character must be 6 character.");  
  93.         }  
  94.         if (!PREFIX.equals(str.substring(02))) {  
  95.             throw new IllegalArgumentException(  
  96.                     "Ascii string of a native character must start with \"\\u\".");  
  97.         }  
  98.         String tmp = str.substring(24);  
  99.         int code = Integer.parseInt(tmp, 16) << 8;  
  100.         tmp = str.substring(46);  
  101.         code += Integer.parseInt(tmp, 16);  
  102.         return (char) code;  
  103.     }  
  104.   
  105. }  
分享到:
评论

相关推荐

    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