J2ME中文乱码

J2ME中文乱码

谁在开发过程中没有遇到过中文乱码,不管你是不是开发J2ME的,举手!我一直觉得这是一个很无语的问题,不知道当初那些整ISO-8859-1和ASCII的人有没有远见,晕了,多整8个bit要死啊,搞得现在这么麻烦。虽然我一直喜欢使用UTF-8来对我的所有代码中出现的东西编码,但是有的时候还是会遇到很多无语的问题。因为很多系统默认是ASCII,有的是ISO-8859-1,还有的时候是咱自己的GBK,但是这些东西国际化的时候就麻烦了,倒过去倒过来,浪费生命。所以我建议使用UTF-8是一种非常不错的习惯。

接下来是一些常用的,可以避免乱码的方法:

最简单的:

  1. new String(byte[] data,String str); //非常实用,String参数是你希望的编码方式
  2. //e.g.
  3. String str = new String("中国".getBytes(),"UTF-8");
  4. //还行吧,呵呵

但是有的时候,人家什么编码你是不知道的啊,所以想这种的话当你确定用什么编码方式的时候就郁闷了,而且即使通过一种复杂的途径确定了编码方式也是不太可取的,因为我们需要考虑到可移植性。所以接下来会有一种更为通用的方法。Following…

那就是byte[]了啊,如果byte[]都还不行…无言独上西楼…月如钩…

  1. String originalStr = "村里有个姑娘" ;
  2. String resultStr = null ;
  3. ByteArrayOutputStream baos ;
  4. DataOutputStream dos ;
  5. ByteArrayInputStream bais ;
  6. DataInputStream dis ;
  7. byte[] data ;
  8. //将任何字符串序列写入到输出流中,通过输出流将序列写入到ByteArrayOutputStream,然后获得byte[]
  9. dos = new DataOutputStream(baos);
  10. dos.writeUTF(str);
  11. data = baos.toByteArray();
  12. //------------
  13. //将写入到流的字符串序列读取回来
  14. bais = new ByteArrayInputStream(data);
  15. dis = new DataInputStream(bais);
  16. resultStr = dis.readUTF();
  17. System.out.println(resultStr); //在这里你可以得到村里那个姑娘

在Data Input/Output Stream中提供了一系列的readXxx()/writeXxx方法,查看API是最明白不过的了。所以有事没事看看API也是一个很不错的习惯,当然在你学习时间里。可不敢在和你老婆散步的时候去看API,不然你会倒霉的。哈哈!
由于这个方法避免了直接操作单个字符,而是以流的形式,都是二进制的所以通用性应该不会差到哪里去。所以呢,不只是中文字符可以用啦。包括日啊,韩文啊,阿拉伯啊,还有什么耶路撒冷啊,甚至脑残一代使用的火星文都可以哦(如果不行的话那就是火星人的问题)。哈哈~“赶紧试试吧。

下面还有:

  1. 2009年05月28日 -- J2ME开发之手机键值适配
  2. 2009年05月23日 -- J2ME Canvas
  3. 2009年05月10日 -- 使用NetBeans开发J2ME
  4. 2009年05月8日 -- KXML2部分详解(J2ME)

posted on 2009-06-10 23:18 菲戈 阅读(1008) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

留言簿

文章档案

相册

搜索

最新评论