GBK到Unicode的互转(Java版)

来源:互联网 发布:2017年最火的网络歌手 编辑:程序博客网 时间:2024/06/09 23:46

             

 

Java版本

说明:

       Java开发中,经常遇到从GBKUnicode码的转换;大家经常做的做法,大概有2种,一种是:native2ascii;只要保存好文件,每次编辑好文件,然后使用该命令转换即可;

另外一种是:Eclipse的插件Properties Editor; 用法不错,自动编辑;但缺点是必须使用Eclipse

      为了开发方便UE+Java,决定在UE中配置Properties转换;实现快速的转换(逆转);

 

正题

       Java版本转换;

       由于Java本身的特点,Unicode与各种编码之间的转换最简便;

       用法:Java PropertiesTranslater “转换字符串

                Java PropertiesTranslater –reverse “字符串

 

UE中的配置如下:

1.       在工具栏添加工具配置:

         

 

2.       配置工具如下图;注意参数为%sel%,也可参照UE文档配置;

      

3.       点击高级,进行选中的替换

   

4.       配置完成。以下即可在UE中,对选中的文本,然后按相应的工具快捷键;

即可对选中的文本,进行转换为Unicode

如果要进行逆向转换,只需按照上述方法,在此添加工具栏,命令行参数添加

“-reverse”参数即可;

 

 

/***********************************示例代码*********************************/

/**

 *

 * PropertiesTranslater

 */

 

public class PropertiesTranslater{

       public static void main(String[] args){

              if(args ==null || args[0]==null){

                     System.out.println("__错误参数配置__");

                     return;

              }

      

              if(args.length==2 && args[1]!=null && "-reverse".equals(args[1])){

                     String result = PropertiesTranslater.Unicode2GBK(args[0]);

                     System.out.print(result);

              }else{

                     String result = PropertiesTranslater.GBK2Unicode(args[0]);

                     System.out.print(result);

              }            

       }

      

       /**

       * 中文转unicode

       * @param str

       * @return 反回unicode编码

       */

       public static String GBK2Unicode(String str){

              StringBuffer result = new StringBuffer();

              for (int i = 0; i < str.length(); i++){

                     char chr1 = (char)str.charAt(i);

                     if(!PropertiesTranslater.isNeedConvert(chr1)){

                            result.append(chr1); 

                            continue;

                     }

                     result.append("//u" + Integer.toHexString((int)chr1));           

              }

              return result.toString();

       }

 

        /**

     * unicode转中文

     * @param  str

     * @return 中文

     */

       public static String Unicode2GBK(String dataStr) {

              int index = 0;

              StringBuffer buffer = new StringBuffer();

       

              while(index<dataStr.length()) {

                     if(!"//u".equals(dataStr.substring(index,index+2))){

                      buffer.append(dataStr.charAt(index));

                      index++;

                      continue;

               }

              String charStr = "";

            charStr = dataStr.substring(index+2,index+6);

           

              char letter = (char) Integer.parseInt(charStr, 16 );

               buffer.append(letter);

                     index+=6;

              }

              return buffer.toString();

       }

       public static boolean isNeedConvert(char para){

              return ((para&(0x00FF))!=para);

       }

}

 

/***********************************示例代码*********************************/

 

 

 

 

参考文章:

中文编码转换为代码Unicode编码,看看

http://topic.csdn.net/t/20040103/18/2629949.html

 

如何把Unicode编码转换成GB码,我需要代码,有的进

http://blog.csdn.net/thisisll/archive/2005/09/01/469422.aspx

 

谈谈Unicode编码,简要解释UCSUTFBMPBOM等名词

http://dev.csdn.net/develop/article/69/69883.shtm

 

UTF8编码的初步认识!

http://dev.csdn.net/develop/article/72/72888.shtm

 

UTF,UCS, 其他编码的转换

http://blog.csdn.net/thisisll/archive/2005/09/01/469422.aspx

 

mbstowcs方法问题;

http://www.softwelt.com/Know/KnowDetail.aspx?Qid=547284

 

         GBKUnicode的转换(Java版本,C版本,Python版本)