笑看风云
一切从头开始
posts - 28, comments - 1, trackbacks - 0, articles - 2
导航
BlogJava
首页
新随笔
联系
聚合
管理
<
2008年8月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
(26)
C语言(1)
dwr(1)
hibernate(4)
Java(11)
javascript(5)
struts(1)
数据库(3)
随笔档案
(28)
2009年11月 (1)
2009年9月 (1)
2009年5月 (2)
2009年4月 (3)
2009年1月 (3)
2008年12月 (5)
2008年8月 (2)
2008年7月 (10)
2008年6月 (1)
文章档案
(2)
2008年7月 (2)
收藏夹
(3)
我的收藏(3)
搜索
积分与排名
积分 - 21683
排名 - 1647
最新评论
1. re: 把数字转换成中文货币表示
10001000.09 竟然输出
壹仟零壹仟圆零玖分
--笨牛
阅读排行榜
1. hibernate批量插入数据(5074)
2. 10秒后实现页面自动跳转(3186)
3. Hibernate配置文件(转载)(1451)
4. dwr session error问题(919)
5. 通用hibernateDAO(887)
评论排行榜
1. 把数字转换成中文货币表示(1)
2. js进行有效性验证(0)
3. 表单错误信息的显示(0)
4. 10秒后实现页面自动跳转(0)
5. JSP隐藏对象(0)
native2ascii工具
Posted on 2008-08-20 14:17
笑看风云
阅读(134)
评论(0)
编辑
收藏
所属分类:
Java
背景:在做Java开发的时候,常常会出现一些乱码,或者无法正确识别或读取的文件,比如常见的validator验证用的消息资源(properties)文件就需要进行Unicode重新编码。原因是java默认的编码方式为Unicode,而我们的计算机系统编码常常是GBK等编码。需要将系统的编码转换为java正确识别的编码问题就解决了。
1
、native2ascii简介:native2ascii是sun java sdk提供的一个工具。用来将别的文本类文件(比如
*
.txt,
*
.ini,
*
.properties,
*
.java等等)编码转为Unicode编码。为什么要进行转码,原因在于程序的国际化。Unicode编码的定义:Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。随着计算机工作能力的增强,Unicode也在面世以来的十多年里得到普及。(声明:Unicode编码定义来自互联网)。
2
、获取native2ascii:安装了jdk后,假如你是在windows上安装,那么在jdk的安装目录下,会有一个bin目录,其中native2ascii.exe正是。
3
、native2ascii的命令行的命名格式:
native2ascii
-
[options] [inputfile [outputfile]]
说明:
-
[options]:表示命令开关,有两个选项可供选择
-
reverse:将Unicode编码转为本地或者指定编码,不指定编码情况下,将转为本地编码。
-
encoding encoding_name:转换为指定编码,encoding_name为编码名称。
[inputfile [outputfile]]
inputfile:表示输入文件全名。
outputfile:输出文件名。如果缺少此参数,将输出到控制台。
4
、最佳实践:首先将JDK的bin目录加入系统变量path。在盘下建立一个test目录,在test目录里建立一个zh.txt文件,文件内容为:“熔岩”,打开“命令行提示符”,并进入C:\test目录下。下面就可以按照说明一步一步来操作,注意观察其中编码的变化。
A:将zh.txt转换为Unicode编码,输出文件到u.txt
native2ascii zh.txt u.txt
打开u.txt,内容为“\u7194\u5ca9”。
B:将zh.txt转换为Unicode编码,输出到控制台
C:\test
>
native2ascii zh.txt
\u7194\u5ca9
可以看到,控制台输出了“\u7194\u5ca9”。
C:将zh.txt转换为ISO8859
-
1编码,输出文件到i.txt
native2ascii
-
encoding ISO8859
-
1
zh.txt i.txt
打开i.txt文件,内容为“\u00c8\u00db\u00d1\u00d2”。
D:将u.txt转换为本地编码,输出到文件u_nv.txt
native2ascii
-
reverse u.txt u_nv.txt
打开u_nv.txt文件,内容为“熔岩”。
E:将u.txt转换为本地编码,输出到控制台
C:\test
>
native2ascii
-
reverse u.txt
熔岩
可以看到,控制台输出了“熔岩”。
F:将i.txt转换为本地编码,输出到i_nv.txt
native2ascii
-
reverse i.txt i_nv.txt
打开i_nv.txt文件,内容为“\u00c8\u00db\u00d1\u00d2”。发现转码前后完全一样的。也就是说,等于没有转,或者说思想糊涂,对命名没有理解。。
G:将i.txt转换为GBK编码,输出到i_gbk.txt
native2ascii
-
reverse
-
encoding GBK i.txt i_gbk.txt
打开i_gbk.txt文件,内容为“\u00c8\u00db\u00d1\u00d2”。发现转码前后完全一样的。也就是说,等于没有转,或者说思想糊涂,对命名没有理解。
H:将u_nv.txt转码到本地编码GBK,输出到控制台
C:\test
>
native2ascii
-
reverse
-
encoding ISO8859
-
1
i.txt
熔岩
从这个结果看,目标达到到了,编码i.txt为ISO8859
-
1
,转为本地编码后内容为“熔岩”。从这里应该意识到,native2ascii
-
reverse命令中
-
encoding指定的编码为源文件的编码格式。而在native2ascii 命令中
-
encoding指定的编码为(生成的)目标文件的编码格式。这一点非常的重要!切记!!
继续探索,新建文件12a.txt,内容“12axyz”。看看纯字母数字的编码又如何。
I:将纯字母数字的文本文件12a.txt转换为Unicode编码
native2ascii 12a.txt 12a_nv.txt
打开12a_nv.txt文件,内容为“12axyz”。
继续测试,转为ISO8859
-
1编码看看
C:\test
>
native2ascii
-
encoding ISO8859
-
1
12a.txt
12axyz
结果还是没有转码。
从结果可以得出结论:对于纯数字和字母的文本类型件,转码前后的内容是一样的。
5
、总结:native2ascii是一个非常的好转码工具,并且转码是可逆的!而其真正的含义并非本地编码——
>
转码为ASCII码,而是一个通用的文本文件编码转换工具。在做编码转换的时候有两类指定编码的情形,分别指输出文件编码和输入文件编码,具体可以看看最佳实践部分。
实际应用中:
比如可以这样利用native2ascii:
native2ascii
-
encoding gbk temp.properties application_zh_CN.properties
这里将根据一个临时文件temp.properties输出了application_zh_CN.properties,然后把application_zh_CN.properties中的文件内容替换这个临时文件的内容就可以了。
引用地址:http://tmsoft.lsxy.com/index.php?load=read&id=393
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
相关文章:
如何制作 MyEclipse 5.5/6.0 绿色版
Java多线程编程总结
Java Web应用中的任务调度
MyEclipse 快捷键大全
文件夹创建,文件夹删除,文件夹拷贝
native2ascii工具
List Map Set
Criteria 查询
Class.forName 介绍
把数字转换成中文货币表示
Powered by:
BlogJava
Copyright © 笑看风云