1. 程式人生 > >java 中一個char包含幾個位元組

java 中一個char包含幾個位元組

背景

  char包含幾個位元組可能記得在上學的時候書上寫的是2個位元組,一直沒有深究,今天我們來探究一下到底一個char多少個位元組?

Char

  char在設計之初的時候被用來儲存字元,可是世界上有那麼多字元,如果有1個位元組,那麼就意味著只能儲存256中,顯然不合適,而如果有兩個位元組,那麼就可以儲存65536種。這個數量符合大多數國家的語言字元的個數。於是java團隊預設使用unicode作為編碼,一個char作為2個位元組來儲存。
  這裡就有兩個問題了?
    1. java的char一定會有兩個位元組嗎?
    2. 中文字元可以儲存在char裡面嗎?
  先來回答第一個問題。char一定是兩個位元組嗎?不是的,這個跟我們選用的字元編碼有關,如果採用”ISO-8859-1”編碼,那麼一個char只會有一個位元組。如果採用”UTF-8”或者“GB2312”、“GBK”等編碼格式呢?這幾種編碼格式採用的是動態長度的,如果是英文字元,大家都是一個位元組。如果是中文,”UTF-8”是三個位元組,而”GBK”和”GB2312”是兩個位元組。而對於”unicode”而言,無論如何都是兩個位元組。
  然後再回答第二個問題,對於一個char如果用”ISO-8859-1”來儲存的話,肯定無法儲存一箇中文,而對於”UTF-8”、“GB2312”、“GBK”而言大多數中文字元是可以儲存的。

總結

  char的長度和是否能儲存中文字元是和編碼格式有關的。對於我們在編碼的時候如果跨平臺編碼時,應該在編碼、解碼的時候設定對應的格式,防止由於編解碼導致的異常。