Java是雙字節編碼,一個字符占2個字節。所以Java裡的一個字符可以放一個漢字,默認的Java項目編碼為GBK,一個漢字2個字節,正好可以放進去,不會出現亂碼。
當你的 字節序列 為某種編碼時,這個時候如果想把字節序列編變成字符串,也要用到這種編碼方式,否則會出現亂碼。
在程序中,將 字節序列 變成 字符串,如果不給出字節序列的編碼方式,則會采用系統默認的編碼方式GBK,例如,bytes是一個UTF-8的字節序列數組,如果要將其轉換成這個字節序列所表示的字符串,則必須給出這種編碼方式:
String str = new String(bytes,”utf-8”);
如果不給出則會按照GBK編碼方式轉換成字符串,就會出現亂碼。
文本文件其實是一種字節序列。
在文本文件可以查看任意編碼的文字信息而不亂碼。
在中文機器上直接創建文本文件,那麼文本文件默認以ansi編碼(也就是GBK)來保存文字信息。
在Eclipse裡面,項目設置的什麼編碼形式,它就只認識什麼編碼。如果從一個utf-8的項目裡拷貝一個文本文件到GBK的項目裡,再打開則會出現亂碼。但是如果從utf-8的文本文件裡直接拷貝文字內容到GBK項目的文本文件裡,不會出現亂碼,系統會自動地做編碼轉換。