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));
? }
}
總結
以上是生活随笔為你收集整理的native2ascii.exe详细使用方法、native2ascii转换示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: b端 ux 设计思维_借助系统思维从视觉
- 下一篇: java面试题24 关于Java中的数组