麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

Java中文問題詳解(轉)

2019-11-18 14:29:20
字體:
來源:轉載
供稿:網友

  我來說一下tomcat如何實現jsp的你就明白了。
預備知識:
 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;i     --{
     -- system.out.PRintln(integer.tohexstring(c[i]));
     --}
     --打印出來是0x4f60
     --但是假如使用8859_1的編碼,打印出來是
     --0x00c4,0x00e3
     ----例1
     反過來:
     --encoding="gb2312";
        char c[]={'/u4f60'};
        convertor=bytetocharconverter.getconverter(encoding);
     --byte [] b=converter.convertall(c);
     --for(int i=0;i     --{
     -- system.out.println(integer.tohexstring(b[i]));
     --}
      --打印出來是:0xc4,0xe3
      ----例2
      --假如用8859_1就是0x3f,?號,表示無法轉化      --
      很多中文問題就是從這兩個最簡單的類派生出來的。而卻有很多類  
  不直接支持把encoding輸入,這給我們帶來諸多不便。很多程序難得用encoding
  了,直接用default的encoding,這就給我們移植帶來了很多困難
  --
  2.utf-8
  --utf-8是和unicode一一對應的,其實現很簡單
  --
   -- 7位的unicode: 0 _ _ _ _ _ _ _
  --11位的unicode: 1 1 0 _ _ _ _ _ 1 0 _ _ _ _ _ _
  --16位的unicode: 1 1 1 0 _ _ _ _ 1 0 _ _ _ _ _ _ 1 0 _ _ _ _ _ _
  --21位的unicode: 1 1 1 1 0 _ _ _ 1 0 _ _ _ _ _ _ 1 0 _ _ _ _ _ _ 1 0 _ _ _ _ _ _
  --大多數情況是只使用到16位以下的unicode:
  --"你"的gb碼是:0xc4e3 ,unicode是0x4f60
  --我們還是用上面的例子
  --  --例1:0xc4e3的二進制:
  --  --    1 1 0 0 0 1 0 0 1 1 1 0 0 0 1 1
  --  --    由于只有兩位我們按照兩位的編碼來排,但是我們發現這行不通,
  --  --    因為第7位不是0因此,返回"?"
  --  --   
  --  --例2:0x4f60的二進制:
  --  --    0 1 0 0 1 1 1 1 0 1 1 0 0 0 0 0
  --  --    我們用utf-8補齊,變成:
  --  --    11100100 10111101 10100000
  --  --    e4--bd-- a0
  --  --    于是返回0xe4,0xbd,0xa0
  --  --
  3.string和byte[]
  --string其實核心是char[],然而要把byte轉化成string,必須經過編碼。
  --string.length()其實就是char數組的長度,假如使用不同的編碼,很可
  --能會錯分,造成散字和亂碼。
  --例:
  ----byte [] b={(byte)'/u00c4',(byte)'/u00e3'};
  ----string str=new string(b,encoding);  ----


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日韩一级网站 | 91精品国产一区二区在线观看 | 色中射 | 国产精品久久久久久久久久妇女 | 色网站免费观看 | 久久精品视频在线免费观看 | 黄视频免费观看 | 国产成人高潮免费观看精品 | 久久精品国产99久久久古代 | 日韩视频在线一区二区三区 | 免费亚洲视频在线观看 | 国产一区二区欧美 | 国产精品一品二区三区四区18 | 一级做a爱片性色毛片 | 欧美城网站地址 | 成人免费网站在线观看视频 | 免费视频www在线观看 | 成人性爱视频在线观看 | 91九色网 | 久久亚洲精品视频 | 日本a∨精品中文字幕在线 欧美1—12sexvideos | 亚洲av一级毛片特黄大片 | 99re久久最新地址获取 | 午夜精品毛片 | 国产一区二区三区四区五区加勒比 | 国产午夜精品在线 | 久久777国产线看观看精品 | 国产三级a三级三级 | 日本高清黄色片 | 国产精品免费一区二区三区四区 | 精品久久久久久久久久久久包黑料 | 亚洲精品wwww | 国产亚洲精品成人a | 黄色的视频在线观看 | 男女羞羞视频在线免费观看 | 线观看免费完整aaa 一二区成人影院电影网 | jizzjizz中国人少妇中文 | 欧美一级黄色网 | 久久久一区二区精品 | 日韩一级免费毛片 | 一级黄片毛片免费看 |