笑看風云
一切從頭開始
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)
搜索
積分與排名
積分 - 21891
排名 - 1650
最新評論
1.?re: 把數字轉換成中文貨幣表示
10001000.09 竟然輸出
壹仟零壹仟圓零玖分
--笨牛
閱讀排行榜
1.?hibernate批量插入數據(5077)
2.?10秒后實現頁面自動跳轉(3202)
3.?Hibernate配置文件(轉載)(1455)
4.?dwr session error問題(923)
5.?通用hibernateDAO(889)
評論排行榜
1.?把數字轉換成中文貨幣表示(1)
2.?js進行有效性驗證(0)
3.?表單錯誤信息的顯示(0)
4.?10秒后實現頁面自動跳轉(0)
5.?JSP隱藏對象(0)
native2ascii工具
Posted on 2008-08-20 14:17
笑看風云
閱讀(140)
評論(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”??纯醇冏帜笖底值木幋a又如何。
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 © 笑看風云
主站蜘蛛池模板:
化隆
|
彰化市
|
内丘县
|
斗六市
|
内乡县
|
同德县
|
奇台县
|
平顶山市
|
孝义市
|
安龙县
|
贵德县
|
夏津县
|
巴彦淖尔市
|
二手房
|
晋城
|
姜堰市
|
南汇区
|
溆浦县
|
山丹县
|
淳安县
|
桂平市
|
江永县
|
靖边县
|
康马县
|
镇远县
|
曲阜市
|
腾冲县
|
婺源县
|
海伦市
|
八宿县
|
万年县
|
靖远县
|
五华县
|
铁岭县
|
治多县
|
绩溪县
|
阿坝县
|
海兴县
|
三门峡市
|
昭苏县
|
安新县
|