propertiesファイルの中国語転送ASCII


ソフトウェア開発の過程で、多言語サポートの問題に関わることがよくあります.よく使われる解決策は、各言語の文字をpropertiesファイルに入れることですが、中国語はASCIIに変換する必要があります.では、中国語をどのように変換するか、以下に便利な方法をいくつか挙げます.
一.jdkのnative 2 ascii
例:
1.1行の中国語文字を変換する
jdkのbinディレクトリに入り、native 2 asciiをダブルクリックします.exe,“こんにちは”を入力して、【車に戻ります】、スクリーンの上で/u 4 f 60/u 597 dを表示します
2.ファイルを変換
cmdコマンドラインで実行(path環境変数の構成に注意)
d:/>native2acsii aa.properties bb.properties 
そうなるとaa.propertiesの中国語文字を変換してbbに保存します.propertiesファイルにあります.注意英語の文字が含まれている場合は、そのまま出力します.
 
二.ant
一度にn個以上のファイルを変換できます
  
           
  
三.eclipseプラグイン
MyEclipseの場合、プラグインのインストール方法は次のとおりです.
インストール手順:
1、EclipseのHelpメニューを展開し、ソフトウェアUpdateサブアイテムにマウスを移動し、表示されたサブメニューの中でFind and Installをクリックする. 
2、Install/UpdateダイアログでSearch for new features to installを選択し、Nextをクリックする. 
3、InstallダイアログでNew Remote Siteをクリックする. 
4、New Update SiteダイアログボックスのNameに任意の文字列を中国語で記入してもいいです.URLに記入してくださいhttp://propedit.sourceforge.jp/eclipse/updates/;その後finishをクリックする必要があるかもしれませんが、後続の部分が表示されます(バージョンによって異なります)
5、Site to include to searchリストで、前のステップで加えたsite以外のオプションを削除し、Finsihをクリックする. 
6、ポップアップのUpdatesダイアログボックスのSelect the features to installリストで「3.1.x」と終わるすべてのオプションを削除します(Eclipse 3.2バージョンの友達に適用します).
7、Finishをクリックしてダイアログボックスを閉じる. 
8、ダウンロード後、インストールに同意し、プロンプトを押してEclipseを再起動し、ツールバーにviのようなボタンを見てインストールに成功したことを示し、プラグインが利用できる.このとき、Eclpiseのすべてのpropertiesファイルのファイル名に緑色のPのアイコンが表示されます.
9、propertiesファイルPropertiesEditor(右クリックopenwith、一般的にプラグインをインストールするとデフォルトでこのエディタが使用されます)が開き、中国語を入力すると自動的にasciiコードに変換されます
 
Eclipseの場合、helpを展開し、Install newソフトウェア、addを選択し、アドレスを入力し、確定するとeclipseが自動的に検索しますが、プラグインをインストールする際にインストールできない場合があります.この場合、私が提供したインストールパッケージをダウンロードできます.
ダウンロード先:http://download.csdn.net/source/1488797
 
プラグインパッケージを直接解凍したfeaturesとpluginsの2つのフォルダをeclipseのホームディレクトリにコピーし、eclipseを再起動すればいいです.
 
四、ASCIIを変換するjavaプログラムを作成し、実行する
     
public class Ascii2Native {
  public static void main(String[] args) {

         File f=new 
File("E://workspaces//cas_workspace//CASServer//src//messages_zh_CN.properties");
             if (f.exists() && f.isFile()) {
                 // convert param-file
                 BufferedReader br = null;
                 String line;
                 try {
                     br = new BufferedReader(new InputStreamReader(new FileInputStream(f), "JISAutoDetect"));
                     while ((line = br.readLine()) != null) {
                         System.out.println(ascii2native(line));
                     }
                 } catch (FileNotFoundException e) {
                     System.err.println("file not found - " + f);
                 } catch (IOException e) {
                     System.err.println("read error - " + f);
                 } finally {
                     try {
                         if (br != null)
                             br.close();
                     } catch (Exception e) {
                     }
                 }
             } else {
             // // convert param-data
             // System.out.print(ascii2native(args[i]));
             // if (i + 1 < args.length)
              System.out.print("wen");
             }
     }
     
     public static String ascii2native(String str) {
         String hex = "0123456789ABCDEF";
         StringBuffer buf = new StringBuffer();
         int ptn = 0;
         for (int i = 0; i < str.length(); i++) {
             char c = str.charAt(i);
             if (c == '//' && i + 1 <= str.length() && str.charAt(i + 1) == '//') {
                 buf.append("////");
                 i += 1;
             } else if (c == '//' && i + 6 <= str.length() && str.charAt(i + 1) == 'u') {
                 String sub = str.substring(i + 2, i + 6).toUpperCase();
                 int i0 = hex.indexOf(sub.charAt(0));
                 int i1 = hex.indexOf(sub.charAt(1));
                 int i2 = hex.indexOf(sub.charAt(2));
                 int i3 = hex.indexOf(sub.charAt(3));
                 if (i0 < 0 || i1 < 0 || i2 < 0 || i3 < 0) {
                     buf.append("//u");
                     i += 1;
                 } else {
                     byte[] data = new byte[2];
                     data[0] = i2b(i1 + i0 * 16);
                     data[1] = i2b(i3 + i2 * 16);
                     try {
                         buf.append(new String(data, "UTF-16BE").toString());
                     } catch (Exception ex) {
                         buf.append("//u" + sub);
                     }
                     i += 5;
                 }
             } else {
                 buf.append(c);
             }
         }
         return buf.toString();
     }
       
     private static byte i2b(int i) {
         return (byte) ((i > 127) ? i - 256 : i);
     }
}

ps:最近、propertiesファイルのセットを同時に編集できるより使いやすいプラグインが見つかりました.http://www.guh-software.de/jinto_en.htmlああ、いいものだ.
移転先住所http://blog.sina.com.cn/s/blog_7671643b01015qnm.html