在开发时,经常会用到多语言支持的问题,常用的解决方案是将各个语言文字放到properties文件中,但中文是需要转为ascii的,一般来说常用的解决方案有以下几种:

一.jdk的native2ascii

举例:

1.转换一行文字

进入jdk的bin目录,双击native2ascii.exe,输入“你好”,【回车】,屏幕上显示/u4f60/u597d

2.转换一个文件

cmd命令行中执行(注意配置好path环境变量)
d:/>native2acsii aa.properties bb.properties
如此一来就aa.properties 中的中文字符转换后保存进bb.properties 文件中。注意如果其中含有英文字符,则原样输出。

二.ant

可以一次就转换n多个文件

  1. <target name="i18n">
  2. <native2ascii encoding="GBK" src="${src.dir}" dest="${build.dir}" includes="*.properties" />
  3. </target>

三.eclipse插件

如果是MyEclipse,安装插件方式如下:

安装步骤:
1、展开Eclipse的Help菜单,将鼠标移到Software 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 software,add,输入地址,确定后eclipse会进行自动搜索,不过安装插件时会出现无法安装的情况,此时可以下载我提供的安装包,

下载地址 :http://download.csdn.net/source/1488797

可以直接将插件包解压后的features和plugins两个文件夹复制到eclipse的home目录下,重启eclipse即可。

ps:个人感觉插件比较方便,当然你要使用eclipse。

另外提供一个将ascii码转换为中文的java代码,从网上找的

原文地址:http://hi.baidu.com/hrhero/blog/item/2ea6d6fa53b8c319a8d311ab.html

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");
             }
     }

/**
     * core routine
     */
     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();
     }

/**
     * unsigned integer to binary
     * <P>
     *
     * @param i
     *            unsigned integer
     * @return binary
     */
     private static byte i2b(int i) {
         return (byte) ((i > 127) ? i - 256 : i);
     }
}

ps:最近发现了一个更好用的插件,可以同时编辑一组properties文件,http://www.guh-software.de/jinto_en.html,恩好东西。

中文与acsii码相互转换方法相关推荐

  1. pythonascii怎么转换字符串_Python 十六进制整数与ASCii编码字符串相互转换方法

    在使用Pyserial与STM32进行通讯时,遇到了需要将十六进制整数以Ascii码编码的字符串进行发送并且将接收到的Ascii码编码的字符串转换成十六进制整型的问题.查阅网上的资料后,均没有符合要求 ...

  2. python十六进制转换为字符串_Python 十六进制整数与ASCii编码字符串相互转换方法...

    在使用Pyserial与STM32进行通讯时,遇到了需要将十六进制整数以Ascii码编码的字符串进行发送并且将接收到的Ascii码编码的字符串转换成十六进制整型的问题.查阅网上的资料后,均没有符合要求 ...

  3. php一个数组赋值给对象,php数组与对象相互转换方法

    php教程数组与对象相互转换方法 function arrayToObject($e){ if( gettype($e)!='array' ) return; foreach($e as $k=> ...

  4. 输入一个字符串,用子函数完成在字符串中找出ACSII码值最大的字符,将其放在第一个位置,并将该字符前的所有字符向后顺序移动

    <程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p143 7.1.2 上级实训内容 [实训内容9]输入一个字符串,用子函数完成在字符串中找出ACSII码 ...

  5. IIS 7.5绑定中文域名转码启动站点报“值不在预期的范围内”

    问题现象 IIS 7.5在绑定中文域名转码后,启动站点会出现[值不在预期的范围内]: 解决方案 此问题是由于中文域名绑定错误导致的,IIS 7.5针对中文域名会自动转换为punycode码,所以不需要 ...

  6. 如何实现Punycode中文域名转码

    如果你见过中文域名应该会觉得很奇怪,为什么复制出来的域名变成一个很莫名其妙的字符串,比如这个秀恩爱的域名"郝越.我爱你",实际显示的域名是 http://xn--vq3al9d.x ...

  7. Java中文与ASCII码的转换

    今天在研究Java中编码的时候,看到了Java中ascii码的强大.写了一个CoderUtils.java,以后会扩展它. package com.xingxd.study.test; import ...

  8. 网络爬虫之Url含有中文如何转码

    在搞爬虫时,有时会遇到url中含有中文字符,请求会出错,那么就需要对含有中文的url进行转码. 以下,以科学网为例,如下图所示: 可以看到,url中含有中文,如下写了一个样例程序,将url中对应的中文 ...

  9. C语言小算法:ACSII码(多字节)和Unicode(宽字节)互转

    C语言小算法:ACSII码(多字节)和Unicode(宽字节)互转 代码: #include <Windows.h> #include <stdio.h> #include & ...

最新文章

  1. 6 redhat 查看rtc时间_甜甜老师的DB Fun圈第2讲:GaussDB 100 OLTP 单机在RHEL7.6上的安装...
  2. java课程课后作业04之动手动脑
  3. fastclick库的介绍和使用
  4. 通过Java和Spring Boot应用程序将Gmail用作SMTP服务器
  5. 如何通过序列化在网络间传递对象,网络协议:轻松定义自己的网络通讯协议
  6. android文件搜索广播,Android 实现无网络传输文件
  7. 计算机硬盘驱动器越大,计算机基础知识1.3摘要.doc
  8. github之关联远程仓库
  9. 北大AI第八讲 李航 自然语言处理的现实与挑战--李航 VS 雷鸣 对话全文
  10. 技术干货|深入理解flannel
  11. OA系统身份认证的设计
  12. js正则验证手机号码和座机号码及邮箱
  13. java等额本金、等额本息计算
  14. 微信小程序开发实战第六讲之手机号验证码登录
  15. 51单片机系列--led点阵屏显示汉字
  16. 英飞凌 AURIX TC3XX 系列单片机的链接文件
  17. 【云原生】Hadoop HA on k8s 环境部署
  18. 教你如何用UltraISO制作U盘系统安装盘(图文教程)
  19. 计算机应用基全部概念,《计算机应用基课程教学大纲.doc
  20. 张飞硬件课程第六部:开关电源(上)

热门文章

  1. Vue中使用使用内联样式
  2. storm32和pixhawk_STORM32云台板调参教程 新人可参考 大师请指点
  3. 用于多UxV管理的人机协作中智能体的透明度研究
  4. 代码REVIEW指南
  5. 笛卡尔积 php,PHP笛卡尔积实现算法示例
  6. nginx收集request_body、response_body
  7. 基于RSA盲签名的隐私集合求交PSI算法
  8. 行测-判断推理-定义判断-快速识别有效信息 -关键词——主体、客体
  9. 爱奇艺qsv格式转mp4
  10. PDF迅捷转换器html网址,如何把PDF转换成HTML?迅捷PDF转换器