笑看風(fēng)云
一切從頭開始
posts - 28, comments - 1, trackbacks - 0, articles - 2
導(dǎo)航
BlogJava
首頁
新隨筆
聯(lián)系
聚合
管理
<
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)
數(shù)據(jù)庫(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)
搜索
積分與排名
積分 - 21907
排名 - 1650
最新評論
1.?re: 把數(shù)字轉(zhuǎn)換成中文貨幣表示
10001000.09 竟然輸出
壹仟零壹仟圓零玖分
--笨牛
閱讀排行榜
1.?hibernate批量插入數(shù)據(jù)(5079)
2.?10秒后實(shí)現(xiàn)頁面自動(dòng)跳轉(zhuǎn)(3203)
3.?Hibernate配置文件(轉(zhuǎn)載)(1455)
4.?dwr session error問題(923)
5.?通用hibernateDAO(890)
評論排行榜
1.?把數(shù)字轉(zhuǎn)換成中文貨幣表示(1)
2.?js進(jìn)行有效性驗(yàn)證(0)
3.?表單錯(cuò)誤信息的顯示(0)
4.?10秒后實(shí)現(xiàn)頁面自動(dòng)跳轉(zhuǎn)(0)
5.?JSP隱藏對象(0)
native2ascii工具
Posted on 2008-08-20 14:17
笑看風(fēng)云
閱讀(140)
評論(0)
編輯
收藏
所屬分類:
Java
背景:在做Java開發(fā)的時(shí)候,常常會(huì)出現(xiàn)一些亂碼,或者無法正確識(shí)別或讀取的文件,比如常見的validator驗(yàn)證用的消息資源(properties)文件就需要進(jìn)行Unicode重新編碼。原因是java默認(rèn)的編碼方式為Unicode,而我們的計(jì)算機(jī)系統(tǒng)編碼常常是GBK等編碼。需要將系統(tǒng)的編碼轉(zhuǎn)換為java正確識(shí)別的編碼問題就解決了。
1
、native2ascii簡介:native2ascii是sun java sdk提供的一個(gè)工具。用來將別的文本類文件(比如
*
.txt,
*
.ini,
*
.properties,
*
.java等等)編碼轉(zhuǎn)為Unicode編碼。為什么要進(jìn)行轉(zhuǎn)碼,原因在于程序的國際化。Unicode編碼的定義:Unicode(統(tǒng)一碼、萬國碼、單一碼)是一種在計(jì)算機(jī)上使用的字符編碼。它為每種語言中的每個(gè)字符設(shè)定了統(tǒng)一并且唯一的二進(jìn)制編碼,以滿足跨語言、跨平臺(tái)進(jìn)行文本轉(zhuǎn)換、處理的要求。1990年開始研發(fā),1994年正式公布。隨著計(jì)算機(jī)工作能力的增強(qiáng),Unicode也在面世以來的十多年里得到普及。(聲明:Unicode編碼定義來自互聯(lián)網(wǎng))。
2
、獲取native2ascii:安裝了jdk后,假如你是在windows上安裝,那么在jdk的安裝目錄下,會(huì)有一個(gè)bin目錄,其中native2ascii.exe正是。
3
、native2ascii的命令行的命名格式:
native2ascii
-
[options] [inputfile [outputfile]]
說明:
-
[options]:表示命令開關(guān),有兩個(gè)選項(xiàng)可供選擇
-
reverse:將Unicode編碼轉(zhuǎn)為本地或者指定編碼,不指定編碼情況下,將轉(zhuǎn)為本地編碼。
-
encoding encoding_name:轉(zhuǎn)換為指定編碼,encoding_name為編碼名稱。
[inputfile [outputfile]]
inputfile:表示輸入文件全名。
outputfile:輸出文件名。如果缺少此參數(shù),將輸出到控制臺(tái)。
4
、最佳實(shí)踐:首先將JDK的bin目錄加入系統(tǒng)變量path。在盤下建立一個(gè)test目錄,在test目錄里建立一個(gè)zh.txt文件,文件內(nèi)容為:“熔巖”,打開“命令行提示符”,并進(jìn)入C:\test目錄下。下面就可以按照說明一步一步來操作,注意觀察其中編碼的變化。
A:將zh.txt轉(zhuǎn)換為Unicode編碼,輸出文件到u.txt
native2ascii zh.txt u.txt
打開u.txt,內(nèi)容為“\u7194\u5ca9”。
B:將zh.txt轉(zhuǎn)換為Unicode編碼,輸出到控制臺(tái)
C:\test
>
native2ascii zh.txt
\u7194\u5ca9
可以看到,控制臺(tái)輸出了“\u7194\u5ca9”。
C:將zh.txt轉(zhuǎn)換為ISO8859
-
1編碼,輸出文件到i.txt
native2ascii
-
encoding ISO8859
-
1
zh.txt i.txt
打開i.txt文件,內(nèi)容為“\u00c8\u00db\u00d1\u00d2”。
D:將u.txt轉(zhuǎn)換為本地編碼,輸出到文件u_nv.txt
native2ascii
-
reverse u.txt u_nv.txt
打開u_nv.txt文件,內(nèi)容為“熔巖”。
E:將u.txt轉(zhuǎn)換為本地編碼,輸出到控制臺(tái)
C:\test
>
native2ascii
-
reverse u.txt
熔巖
可以看到,控制臺(tái)輸出了“熔巖”。
F:將i.txt轉(zhuǎn)換為本地編碼,輸出到i_nv.txt
native2ascii
-
reverse i.txt i_nv.txt
打開i_nv.txt文件,內(nèi)容為“\u00c8\u00db\u00d1\u00d2”。發(fā)現(xiàn)轉(zhuǎn)碼前后完全一樣的。也就是說,等于沒有轉(zhuǎn),或者說思想糊涂,對命名沒有理解。。
G:將i.txt轉(zhuǎn)換為GBK編碼,輸出到i_gbk.txt
native2ascii
-
reverse
-
encoding GBK i.txt i_gbk.txt
打開i_gbk.txt文件,內(nèi)容為“\u00c8\u00db\u00d1\u00d2”。發(fā)現(xiàn)轉(zhuǎn)碼前后完全一樣的。也就是說,等于沒有轉(zhuǎn),或者說思想糊涂,對命名沒有理解。
H:將u_nv.txt轉(zhuǎn)碼到本地編碼GBK,輸出到控制臺(tái)
C:\test
>
native2ascii
-
reverse
-
encoding ISO8859
-
1
i.txt
熔巖
從這個(gè)結(jié)果看,目標(biāo)達(dá)到到了,編碼i.txt為ISO8859
-
1
,轉(zhuǎn)為本地編碼后內(nèi)容為“熔巖”。從這里應(yīng)該意識(shí)到,native2ascii
-
reverse命令中
-
encoding指定的編碼為源文件的編碼格式。而在native2ascii 命令中
-
encoding指定的編碼為(生成的)目標(biāo)文件的編碼格式。這一點(diǎn)非常的重要!切記!!
繼續(xù)探索,新建文件12a.txt,內(nèi)容“12axyz”。看看純字母數(shù)字的編碼又如何。
I:將純字母數(shù)字的文本文件12a.txt轉(zhuǎn)換為Unicode編碼
native2ascii 12a.txt 12a_nv.txt
打開12a_nv.txt文件,內(nèi)容為“12axyz”。
繼續(xù)測試,轉(zhuǎn)為ISO8859
-
1編碼看看
C:\test
>
native2ascii
-
encoding ISO8859
-
1
12a.txt
12axyz
結(jié)果還是沒有轉(zhuǎn)碼。
從結(jié)果可以得出結(jié)論:對于純數(shù)字和字母的文本類型件,轉(zhuǎn)碼前后的內(nèi)容是一樣的。
5
、總結(jié):native2ascii是一個(gè)非常的好轉(zhuǎn)碼工具,并且轉(zhuǎn)碼是可逆的!而其真正的含義并非本地編碼——
>
轉(zhuǎn)碼為ASCII碼,而是一個(gè)通用的文本文件編碼轉(zhuǎn)換工具。在做編碼轉(zhuǎn)換的時(shí)候有兩類指定編碼的情形,分別指輸出文件編碼和輸入文件編碼,具體可以看看最佳實(shí)踐部分。
實(shí)際應(yīng)用中:
比如可以這樣利用native2ascii:
native2ascii
-
encoding gbk temp.properties application_zh_CN.properties
這里將根據(jù)一個(gè)臨時(shí)文件temp.properties輸出了application_zh_CN.properties,然后把a(bǔ)pplication_zh_CN.properties中的文件內(nèi)容替換這個(gè)臨時(shí)文件的內(nèi)容就可以了。
引用地址:http://tmsoft.lsxy.com/index.php?load=read&id=393
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關(guān)文章:
如何制作 MyEclipse 5.5/6.0 綠色版
Java多線程編程總結(jié)
Java Web應(yīng)用中的任務(wù)調(diào)度
MyEclipse 快捷鍵大全
文件夾創(chuàng)建,文件夾刪除,文件夾拷貝
native2ascii工具
List Map Set
Criteria 查詢
Class.forName 介紹
把數(shù)字轉(zhuǎn)換成中文貨幣表示
Powered by:
BlogJava
Copyright © 笑看風(fēng)云
主站蜘蛛池模板:
东平县
|
太仆寺旗
|
化德县
|
重庆市
|
临澧县
|
泗阳县
|
武穴市
|
吉木萨尔县
|
札达县
|
南涧
|
沁水县
|
呼玛县
|
武宁县
|
土默特左旗
|
遂平县
|
广丰县
|
灌云县
|
巨鹿县
|
晋宁县
|
黄冈市
|
勃利县
|
竹北市
|
中方县
|
江阴市
|
安多县
|
沈阳市
|
荔波县
|
福建省
|
同德县
|
辉县市
|
琼结县
|
穆棱市
|
芦山县
|
特克斯县
|
文登市
|
平度市
|
镇江市
|
罗山县
|
于都县
|
丽水市
|
凉城县
|