J2ME中文亂碼
J2ME中文亂碼
誰在開發(fā)過程中沒有遇到過中文亂碼,不管你是不是開發(fā)J2ME的,舉手!我一直覺得這是一個(gè)很無語的問題,不知道當(dāng)初那些整ISO-8859-1和ASCII的人有沒有遠(yuǎn)見,暈了,多整8個(gè)bit要死啊,搞得現(xiàn)在這么麻煩。雖然我一直喜歡使用UTF-8來對(duì)我的所有代碼中出現(xiàn)的東西編碼,但是有的時(shí)候還是會(huì)遇到很多無語的問題。因?yàn)楹芏嘞到y(tǒng)默認(rèn)是ASCII,有的是ISO-8859-1,還有的時(shí)候是咱自己的GBK,但是這些東西國際化的時(shí)候就麻煩了,倒過去倒過來,浪費(fèi)生命。所以我建議使用UTF-8是一種非常不錯(cuò)的習(xí)慣。
接下來是一些常用的,可以避免亂碼的方法:
最簡單的:
- new String(byte[] data,String str); //非常實(shí)用,String參數(shù)是你希望的編碼方式
- //e.g.
- String str = new String("中國".getBytes(),"UTF-8");
- //還行吧,呵呵
但是有的時(shí)候,人家什么編碼你是不知道的啊,所以想這種的話當(dāng)你確定用什么編碼方式的時(shí)候就郁悶了,而且即使通過一種復(fù)雜的途徑確定了編碼方式也是不太可取的,因?yàn)槲覀冃枰紤]到可移植性。所以接下來會(huì)有一種更為通用的方法。Following…
那就是byte[]了啊,如果byte[]都還不行…無言獨(dú)上西樓…月如鉤…
- String originalStr = "村里有個(gè)姑娘" ;
- String resultStr = null ;
- ByteArrayOutputStream baos ;
- DataOutputStream dos ;
- ByteArrayInputStream bais ;
- DataInputStream dis ;
- byte[] data ;
- //將任何字符串序列寫入到輸出流中,通過輸出流將序列寫入到ByteArrayOutputStream,然后獲得byte[]
- dos = new DataOutputStream(baos);
- dos.writeUTF(str);
- data = baos.toByteArray();
- //------------
- //將寫入到流的字符串序列讀取回來
- bais = new ByteArrayInputStream(data);
- dis = new DataInputStream(bais);
- resultStr = dis.readUTF();
- System.out.println(resultStr); //在這里你可以得到村里那個(gè)姑娘
在Data Input/Output Stream中提供了一系列的readXxx()/writeXxx方法,查看API是最明白不過的了。所以有事沒事看看API也是一個(gè)很不錯(cuò)的習(xí)慣,當(dāng)然在你學(xué)習(xí)時(shí)間里。可不敢在和你老婆散步的時(shí)候去看API,不然你會(huì)倒霉的。哈哈!
由于這個(gè)方法避免了直接操作單個(gè)字符,而是以流的形式,都是二進(jìn)制的所以通用性應(yīng)該不會(huì)差到哪里去。所以呢,不只是中文字符可以用啦。包括日啊,韓文啊,阿拉伯啊,還有什么耶路撒冷啊,甚至腦殘一代使用的火星文都可以哦(如果不行的話那就是火星人的問題)。哈哈~“趕緊試試吧。
下面還有:
posted on 2009-06-10 23:18 菲戈 閱讀(1040) 評(píng)論(0) 編輯 收藏