Java的中文程式設計與配置心得 (轉)
的中文與心得
Java的中文問題歷史悠久,連綿不絕,至今也沒有完全解決,但是上有政策下有對策,我們總是有辦法搞定它的。跟Java相關的中文問題主要有兩類,一類是程式設計的問題,涉及到I/O,內碼轉換等。第二類是Java執行環境的配置,涉及字型,屬性配置等。我剛剛用了一天的時間解決這些問題,覺得很有必要給自己寫個備忘錄之類的。
我看還是從問題入手吧,這樣不致於讓大家打瞌睡。我想寫個,這個程式有個基本功能就是顯示內容,我用JTextArea來做顯示的事情,程式簡單的到家了,但是就是中文都是亂碼。我的配置是JBuilder7,JBuilder自帶的1.3.3_b24,我自己裝的JDK是JDK1.4.0_02_b02,都是主流的JDK。操作是英文2000加中文支援包。
我嘗試換JDK,1.3.3和1.4.0都不行,down一個最新的j2sdk-1_4_1-rc也是不行,好像不是JDK的問題,於是我就把精力集中到I/O的編碼轉換上,我查閱了網上若干關於JAVA中文問題的文章,把編碼轉換搞的倍兒清楚,可是怎麼試,換什麼編碼折騰都不行,反而顯示的更糟糕,當初還是亂的有些規矩,就是象在純英文系統上顯示的那樣,好歹我還知道那是漢字,只是顯示不出來,等我折騰編碼,就變得都是問號了。唉,鬱悶!
編碼轉換心得:
JAVA內部是UNICODE編碼,在I/O時如果使用Reader/Writer就要發生編碼轉換,使用系統屬性file.encoding作為編碼方式。如果使用Stream就沒有轉換的事情了,那是Binary的資料。
有用的方法有:1。在Reader/Writer上加encoding的選項,注意編碼的方向,在Reader中的encoding表示把資料從encoding轉換成Unicode,writer就是把Unicode的字元轉換成encoding格式的。2。用String.getByte()把字串轉換成指定編碼。
常用的編碼格式:ISO8859_1,這個是英文系統預設的8bit編碼,因為是8bit的,所以不會把漢字的高位刪去,所以用它也是可以處理漢字的(我自己這麼理解,總覺得有些不妥,但又不知道不妥在何處,還望高人指出)。GB2312和GBK,漢字編碼,推薦使用GBK,它相容GB2312並且支援更多漢字。UNICODE,一個大的字符集,不知是不是國際標準反正大家都支援,使用16位對每個字元編碼,漢字雖然正合適,但英文卻吃虧了,要用多一倍的空間來,所以很多人還是老大不樂意,寫的程式不支援UNICODE。
/的中文問題有兩種解決辦法:1。不在程式中進行編碼轉換,把這個工作交給,方法就是用javac –encoding GBK *.java來編譯所有的bean,然後在JSP頁面上加
或者是在HTML中直接加:
到底加那個,試試就知道了,我也搞不清楚了。
2。在程式中指定編碼,用javac –encoding ISO8859_1 *.java來編譯所有的bean,在涉及到中文顯示的程式上加
str=new String(str.getBytes("ISO8859_1"));
上面兩種方法不能混用,意思就是要麼就是GBK,要麼就是ISO8859_1,從裡到外都一樣就好了。
JC的中文問題,一般只要按照資料庫指定的編碼進行轉換,比如按照ISO8859_1讀,ISO8859_1寫,一般就沒什麼問題了。
雖然有這些編碼上的心得,但是並不能解決我的問題。看來我的程式輸入輸出用的都是ISO8859_1,我的問題跟編碼沒什麼關係。是不是字型的問題呢?在的中,字型總是那麼幾個,基本上是定死的,選那個都不行。但是我突然發現可以更改這些字型的配置,就是font.properties 這個檔案,一般JDK都帶了中文的字型配置檔案,可能是font.properties.zh之類的,不同版本的JDK名字有些差別,你要做的就是用中文的配置覆蓋font.properties檔案。我滿心歡喜的以為成功了,但是失敗無情的又一次打擊了我。不是這種方法不對,但是在Windows系統中,java能夠比較自動的檢查你的系統編碼,使用最合適的字型配置檔案,一般不需要你改動了,在JDK1.2之前確實是要這麼改的,難怪那篇文章是JDK1.1的文件呢。
連font.properties也不靈了,唉,是不是JBuilder有問題呀?到了這兒,我不得不懷疑它了,雖然它從沒讓我失望過,我關掉JBuilder,拿起JDK命令列,哎呀!可愛的中文竟然出來了!簡直是.....莫名其妙呀,因為JBuilder也是用的這個JDK呀?沒理由呀,我再次開啟JBuilder,執行,亂碼!怪事.......我來看看.....我把JBuilder裡面的命令複製到DOS視窗裡手動執行....沒有中文.....怪怪怪,我仔細對照我手敲的命令和JBuilder拷出來的命令,除了我用的是java它用的是javaw之外,別的幾乎都一樣,難道.......這個java和javaw竟然會不一樣?
唉.......要我說什麼呢,答案就是這個了,javaw會使用與java不同的Local配置進行工作,導致了我一直看不到中文,而java就是好好的。JBuilder也是好好的,沒有問題,javaw也不是它的錯,難道你想每次執行或者的時候蹦出個DOS黑框麼?呵呵。這是JDK的一個,我在java的網站上查到這個bug,描述的情況跟我的一樣,然後Sun說這個Bug已經修復了,嘿嘿,簡直就是扯淡!修復個茄子!Bug編號是:4629351。不信可以去看看。
但是難道我就不能在JBuilder裡面看我可愛的中文了嗎?好像JBuilder5的時候還能選擇是用java還是javaw,現在好像沒法兒選了。怎麼才能讓javaw支援中文呢?經過又是一番苦苦查詢,竟然沒有什麼結果,鬱悶!正當苦悶之時,突然想起當初配置過下的,好像加了些啟動引數,就能讓tomcat支援中文了,趕快翻出以前的文件,啊,幸好我當初寫了工作心得,要不然又抓瞎了。其實道理很簡單,就是給JAVA虛擬機器加上一些屬性:
-Dfile.encoding=GBK -Ddefault.client.encoding=GBK -Duser.language=zh -Duser.region=CN
把它跟在javaw的命令列後面當引數,哈哈,搞定!
在JBuilder中選擇Project->Project Properties->run->edit->VM Parameters,填上就行了!
配置心得:
在JDK低版本和UNIX下,需要改動font.properties,讓JAVA VM能夠找到合適的字型來顯示漢字。
目前為止,javaw有Bug,只使用英文的Local,需要給VM加上屬性才行正常顯示中文。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991734/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- VB程式設計的一些心得 (轉)程式設計
- 程式設計心得程式設計
- Java的網路功能與程式設計 一 (轉)Java程式設計
- 中文程式設計之思考 (轉)程式設計
- VB資料庫程式設計的幾點心得 (轉)資料庫程式設計
- 7月程式設計心得程式設計
- 客戶端Cookie中文程式設計 (轉)客戶端Cookie程式設計
- 用Delphi進行OpenGL程式設計學習心得 (轉)程式設計
- Script in Java中文版Java指令碼程式設計:語言、框架與模式勘誤Java指令碼程式設計框架模式
- 計算機程式設計心得總結計算機程式設計
- 工作5年的阿里Java程式設計師分享從業心得總結與面試筆記分享阿里Java程式設計師面試筆記
- Java 高效程式設計(Effective Java)中文第三版Java程式設計
- 程式設計師與MM (轉)程式設計師
- 並口與程式設計 (轉)程式設計
- Java併發程式設計---java規範與模式下的併發程式設計1.1Java程式設計模式
- 2001年高階程式設計師考試心得 (轉)程式設計師
- java物件導向程式設計(轉)Java物件程式設計
- Java網路程式設計4 (轉)Java程式設計
- Java實驗六: Java流式程式設計與網路程式設計(頭歌)Java程式設計
- Java與Matlab混合程式設計JavaMatlab程式設計
- C與指令碼的混合程式設計 (轉)指令碼程式設計
- 【Java】程式設計過程中遇到的中文編碼問題Java程式設計
- 頂級程式設計師的心得 Coders at Work程式設計師
- XML與ASP程式設計(一) (轉)XML程式設計
- JAVA托盤程式SystemTray的心得Java
- [轉貼]一個JAVA 程式設計師的告白Java程式設計師
- Vector在Java程式設計中的應用 (轉)Java程式設計
- Java中的非同步網路程式設計 (轉)Java非同步程式設計
- 【轉載】MapReduce程式設計 Intellij Idea配置MapReduce程式設計環境程式設計IntelliJIdea
- 程式設計為什麼不用中文?未來用中文程式設計可能麼?程式設計
- Unix程式設計/應用問答中文版 ---1.系統管理配置問題(轉)程式設計
- javascript可以與java整合程式設計嗎JavaScript程式設計
- JAVA程式與資料庫設計困惑~Java資料庫
- 垃圾收集器與Java程式設計Java程式設計
- 學習Java:垃圾回收與程式設計Java程式設計
- 程式設計與雞和蛋的關係 (轉)程式設計
- 中文版《計算機程式設計藝術》譯者的回憶 (轉)計算機程式設計
- [心得]APUE高階程式設計知識整理程式設計