“在JAVA中的字符是Unicode編碼,是雙字節的。InputStream類,是用來處理字節的,並不適合處理字符文本”這句話該怎麼理解?這雙字節編碼、字節處理、字符文本又該怎麼理解?我是新手求調教下。
你的一個字符串就是一個String,每個String裡的每個字都是一個char(字符),你可以通過String.charAt()函數獲取字符串中的char。這個char包含了所有的英文,中文,符號和其他各國語言。所以它的內部是用一個16位的整數來保存的,這就是文檔上說的UNICODE編碼。
我們如果只在程序內部操作字符串,那最多只要關心到char就足夠了。但是如果保存到文件中,就要把char轉換成byte(字節)。因為在文件中是以字節為單位存儲的。
而且由於現在char轉byte的轉換方式已經成型了很多編碼規范,比如GB-2312, UTF-8, UNICODE等等,因此要在char和byte之間做轉換的話,必須要指定轉換所使用的編碼規范,
一旦規范寫錯,轉換成的字符串就不是你想要的了。而且幾乎無法查錯。所以才有這麼一句話。
一般在java裡都會在InputStream類外面包一層文本格式轉換的流類,然後通過外邊那層類來操作流