`
hanqunfeng
  • 浏览: 1527209 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

中文与acsii码相互转换方法

    博客分类:
  • JAVA
阅读更多

在开发时,经常会用到多语言支持的问题,常用的解决方案是将各个语言文字放到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. <targetname="i18n">
  2. <native2asciiencoding="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,恩好东西。

分享到:
评论

相关推荐

    Java代码实现中文与ASCII互相转换

    Java自定义实现本地语言与ASCII之间的互相转换。可在开发项目中直接调用的工具类。

    ascii码 与 字符串 相互转化

    ascii码 与 字符串 相互转化 ascii码 与 字符串 相互转化 ascii码 与 字符串 相互转化

    VB 字符和ASCII码间的相互转换

    VB 字符和ASCII码间的相互转换 VB 字符和ASCII码间的相互转换

    ASCII码转换器 ASCII码相互转换

    【基本介绍】 本软件将字符与ASCII码相互转换!您也可以将一句话多次转换,汉字显示的为机内码!

    ASCII码内码转换小工具

    支持汉字、内码、unicode码之间相互的码制转换

    汉字转换ASCII

    汉字和ASCII码之间相互转换,方便编程使用。如: ActionRemove.SHORT_DESCRIPTION=删除 ActionRemove.SHORT_DESCRIPTION=\u5220\u9664

    ASCII及进制转换器

    字符转换:字符转换为10进制(ASCII码)并且可偏移ASCII码,及16进制及其逆操作。 转换为10进制的双字节字符(例如汉字)有:正数、负数、字节分离三种表示方法 支持加入前置及后置字符,可轻松组合出UTF-8编码等...

    字符文字转ASCII码

    ASCII码与字符之间相互转换!!!!!

    Unicode码Ascii码转换对照表

    用于在PHP无法使用 iconv 函数和 mb_string 库的情况下,实现GB2312与UNICODE的相互转换。 正确转换的前提是你的系统是简体中文版的Windows。 包内附加一个UNICODE转换为GB2312的函数,看看里面的函数就明白了。 有...

    ASCII及十六进制转换工具《建》

    其中字符转换为ASCII码中,如果字符为汉字(即双字节) 可选择:正数、负数或者字节分离三种表示方式 利如汉字"中" 正数:54992 负数:-10544 字节分离:214,208 说明: 如果包含汉字字符,且选了负数或字节分离表示方式...

    PHP实现ASCII码与字符串相互转换的方法

    主要介绍了PHP实现ASCII码与字符串相互转换的方法,涉及php字符串的遍历、替换、编码转换等相关操作技巧,需要的朋友可以参考下

    ASCII及进制转换

    字符转换:字符转换为10进制(ASCII码)及16进制及其逆操作。 转换为10进制的汉字字符有:正数、负数、字节分离三种表示方法 支持加入前置及后置字符,可轻松组合出UTF-16编码等字符 键盘码的查询:以10和16进制...

    ASCII及进制转换 V4.0

    字符转换:字符转换为10进制(ASCII码)并且可偏移ASCII码,及16进制及其逆操作。 转换为10进制的双字节字符(例如汉字)有:正数、负数、字节分离三种表示方法 支持加入前置及后置字符,可轻松组合出UTF-8编码等...

    c/c++进制转换 转中文

    c/c++进制转换 转中文 16进制 2进制 10进制 相互转换........................................................................

    很不错的 汉字 内码转换器

    《汉字区位码内码转换伴侣》是一个非常方便实用的软硬件开发调试工具,程序可以在汉字、区位码、内码之间三者之间任意互相转换。能有效的提高开发调试速度,节约大量的查询时间。 区位码查询小工具 ============= 使...

    编码转换工具

    编码转换工具支持ASCII和Unicode、Unicode和中文相互转换。

    多进制转换器

    字符转换:字符转换为10进制(ASCII码)并且可偏移ASCII码,及16进制及其逆操作。 转换为10进制的双字节字符(例如汉字)有:正数、负数、字节分离三种表示方法 支持加入前置及后置字符,可轻松组合出UTF-8编码等...

    ACSII 及进制转换工具

    字符转换:字符转换为10进制(ASCII码)并且可偏移ASCII码,及16进制及其逆操作。 转换为10进制的双字节字符(例如汉字)有:正数、负数、字节分离三种表示方法 支持加入前置及后置字符,可轻松组合出UTF-8编码等...

    进制转换工具

    字符转换:字符转换为10进制(ASCII码)并且可偏移ASCII码,及16进制及其逆操作。 转换为10进制的双字节字符(例如汉字)有:正数、负数、字节分离三种表示方法 支持加入前置及后置字符,可轻松组合出UTF-8编码等...

    全国计算机应用基础知识:汉字、字符编码.pdf

    表1-4 BCD码与⼗进制数的对应关系 Unicode编码 ASCII码提供了128个字符,扩展的ASC码提供了256个字符,但⽤来表⽰世界各国的⽂字编码还显得不够,还需要表⽰更多的字符和意义,因 此⼜出现了Unicode编码。...

Global site tag (gtag.js) - Google Analytics