日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
淺談Java中的編碼理論

Java是使用Unicode字符集的,意思是在內(nèi)存運(yùn)行的時(shí)候是這樣的。當(dāng)Java源程序被編譯為.class文件的時(shí)候,是以UTF-8字符集存儲(chǔ)字符的。比如字符串"漢語(yǔ)"的Unicode字符為:0x49 6C ED 8B。在.class文件中則變成了:0xE6 B1 89 E8 AF AD 0D 0A。實(shí)際上如果用以下程序輸出“漢語(yǔ)”二個(gè)字的16進(jìn)制字節(jié)序列:

        String str = "漢語(yǔ)";

        try{
              byte[] b = str.getBytes("Unicode");
              for(int i : b){
              System.out.println(Integer.toHexString(i));
        }       
        }catch(Exception ex){
              ex.printStackTrace();  }

會(huì)發(fā)現(xiàn),實(shí)際輸出的是 0xFE FF 6C 49 8B ED。多出來(lái)的0xFE FF,是Unicode字符串的BOM(Byte Order Mark)。但是為什么輸出的順序(0xFE FF 6C 49 8B ED)和文件中的順序不一致(0xFF FE 49 6C ED 8B)?

public byte[] getBytes(Charset charset) 使用指定的字符集將此 String 解碼為字節(jié)序列,并將結(jié)果存儲(chǔ)到一個(gè)新的字節(jié)數(shù)組中。如果不指定參數(shù),則使用系統(tǒng)默認(rèn)的字符集,對(duì)于簡(jiǎn)體中文系統(tǒng)一般為GBK。

看程序:

class EncodingExer 
{
    public static void main(String[] args)
    {
          String str = "漢語(yǔ)";               //GBK編碼為: 0xBABA 0xD3EF
          byte[] b = str.getBytes();     
          for(int i : b){
              System.out.println(Integer.toHexString(i)); //0xBA 0xBA 0xD3 0xEF
          }    }}

在這個(gè)過(guò)程中,由Unicode字符得到字符串“漢語(yǔ)”,然后解碼得到了GBK字節(jié)序列。與String.getBytes()相對(duì)應(yīng)的是new String(byte[] bytes,Charset charset),它的作用是用字節(jié)序列生成字符串。如果想由剛才的GBK字節(jié)序列得到原來(lái)的字符串“漢語(yǔ)”,我們需要做的是:new String(b) 就可以了。將b按照GBK編碼得到字符串“漢語(yǔ)”,然后轉(zhuǎn)化為Unicode字符。如果是str.getBytes("iso-8859-1"),那么還原的時(shí)候就是new String(b,"iso-8859-1")??傊褪怯檬裁捶绞骄幋a,就用什么方式解碼。


網(wǎng)站欄目:淺談Java中的編碼理論
分享路徑:http://www.dlmjj.cn/article/ccdgoji.html