native2ascii.exe详细使用方法、native2ascii转换示例

native2ascii是sun java sdk提供的一个转码工具, 用来将别的文本类文件(比如 *.txt, *.ini, *.properties, *.java 等等)编码转为Unicode编码。

1. 如何获取 native2ascii.exe?

安装了jdk后,假如你是在windows上安装,那么在jdk的安装目录下,会有一个bin目录, 该目录下就有我们所需要的native2ascii.exe 工具

2. native2ascii.exe使用方法:

命令的语法格式:

native2ascii -[options] [inputfile [outputfile]]

  说明:

  -[options]:表示命令开关,有两个选项可供选择

  -reverse:将Unicode编码转为本地或者指定编码,不指定编码情况下,将转为本地编码。

  -encoding encoding_name:转换为指定编码,encoding_name为编码名称。

   [inputfile [outputfile]]

   inputfile:表示输入文件全名。

   outputfile:输出文件名。如果缺少此参数,将输出到控制台。

举例: 把需要进行国际化的文件(如下图)拷贝到 C:\Program Files\Java\jdk1.6.0_31\bin 目录下, 应用native2ascii.exe工具进行转码。

通过cmd命令进入DOS命令窗口进行如下操作:

通过native2ascii命令转码成功后,如下图:

备注:native2ascii.exe是一个应用比较简单的转码工具,并且转码是可逆的。

试试如下命令:

native2ascii -reverse  new.txt   yan.txt

结果:

native2ascii -encoding gbk  old.txt   new.txt

结果:

java代码实现的jdk工具native2ascii.exe

分享个java实现的native2ascii.exe的转换工具,很有用。

package com.zuidaima;

/**

 * 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) {

    String uni = "\u5185\u5bb9ID\u4e0d\u80fd\u4e3a\u7a7a";

    System.out.println(ascii2Native(uni));

  }


}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 是的,Matlab中有类似的功能。可以使用“unicode2native”函数将字符串编码为指定格式,如下所示: ```matlab str = 'abc'; encoded_str = unicode2native(str, 'ascii'); ``` 其中,“str”为要编码的字符串,“encoded_str”为编码后的结果,“ascii”为指定的编码格式。 ### 回答2: 在Matlab中,没有直接等效于Python中字符串编码(“abc”.encode(“ascii”))的内置函数或语句。然而,可以通过使用其他Matlab内置函数和方法来实现类似的功能。 一种方法使用matlab.lang.OnCleanup类中的onCleanup函数来转换字符串编码。该函数可以将字符串从一个编码转换为另一个编码并返回新的编码后的字符串。以下是一个示例代码: ```matlab function encoded_str = encode_ascii(str) cleanupObj = onCleanup(@() feature('locale',locale)); feature('locale','ascii'); encoded_str = native2unicode(str, 'ASCII'); end ``` 调用encode_ascii函数,并传入需要编码的字符串作为参数,将会返回ASCII编码后的字符串。示例如下: ```matlab str = 'abc'; encoded_str = encode_ascii(str); disp(encoded_str); ``` 输出结果为: ``` abc ``` 需要注意的是,在Matlab中,字符串的默认编码是UTF-8,因此直接访问字符串变量将返回UTF-8编码的字符串。因此,如果字符串已经是ASCII编码的,可以直接使用不必再进行编码转换。 总结起来,虽然在Matlab中没有直接等效于Python中字符串编码的内置函数或语句,但可以通过其他内置函数和方法来实现类似的功能。 ### 回答3: 在MATLAB中可以使用`double`函数将字符转为ASCII码,从而实现类似Python中的`"abc".encode("ascii")`的功能。具体操作如下: ```matlab str = 'abc'; % 定义字符串 ascii_code = double(str); % 将字符串转为ASCII码 ``` 以上语句将字符串`'abc'`转为对应的ASCII码,`ascii_code`变量将存储数组`[97, 98, 99]`,其中97、98、99分别是字符'a'、'b'、'c'的ASCII码值。需要注意的是,MATLAB中的字符串默认使用Unicode编码,因此只有在处理ASCII字符时才会与Python的`"abc".encode("ascii")`类似。 除了使用`double`函数,还可以使用`unicode2native`函数将字符串编码为字节流以实现类似的功能。例如: ```matlab str = 'abc'; % 定义字符串 byte_stream = unicode2native(str, 'US-ASCII'); % 将字符串编码为US-ASCII字节流 ``` 以上语句将字符串`'abc'`编码为对应的US-ASCII字节流,`byte_stream`变量将存储字节数组`[97, 98, 99]`,与Python的`"abc".encode("ascii")`等价。 需要注意的是,MATLAB与Python在字符串处理上存在一些差异,因此不能完全等同地实现Python中的所有字符串处理功能。在具体使用时应注意语言间的差异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值