cat 发表于 2008-12-27 17:41:51

java中 中文问题详解

  预备知识:
   1.字节和unicode
    Java内核是unicode的,就连class文件也是,但是很多媒体,包括文件/流的保存方式
    是使用字节流的。 因此Java要对这些字节流经行转化。char是unicode的,而byte是字节.
    Java中byte/char互转的函数在sun.io的包中间有。其中ByteToCharConverter类是中调度,
    可以用来告诉你,你用的Convertor。其中两个很常用的静态函数是
     public static ByteToCharConverter getDefault() ;
     public static ByteToCharConverter getConverter(String encoding);
    如果你不指定converter,则系统会自动使用当前的Encoding,GB平台上用GBK,EN平台上用
    8859_1
    
    我们来就一个简单的例子:
       "你"的gb码是:0xC4E3 ,unicode是0x4F60
       你用:
       --encoding="gb2312";
       --byte b[]={(byte)"u00c4",(byte)"u00E3"};
       --convertor=ByteToCharConverter.getConverter(encoding);
       --char [] c=converter.convertAll(b);
       --for(int i=0;i0xC4,0x00E3->0xE3,因此0xC4,0xE3被放进了
   --文件
  ----
  1.对于JSP正文的解释:
  --Tomcat首先看一下你的叶面中有没有"
  你好
  
  
  http://localhost/test/test.jsp?value=你
  
  结果:你好你
  
  但这种方法局限性较大,比如对上传的文章分段,这样的做法是死定的,最好的
  解决方案是用这种方案:
  
  
  你好
  
  
  
  必读好文,但解决方案不敢恭维
  
  
页: [1]
查看完整版本: java中 中文问题详解