字符集或者說字符編碼就是給字符定義了數值編號以及數值編號存儲格式。
成都創(chuàng)新互聯公司是一家專業(yè)提供宜都企業(yè)網站建設,專注與網站建設、成都網站制作、HTML5建站、小程序制作等業(yè)務。10年已為宜都眾多企業(yè)、政府機構等服務。創(chuàng)新互聯專業(yè)的建站公司優(yōu)惠進行中。
嚴格來說字符集和字符編碼是兩個概念: charset 是 character set 的簡寫,即字符集。 encoding 是 charset encoding 的簡寫,即字符集編碼,簡稱編碼。 字符集:定義了每個字符對應的二進制數值關系,也就是給字符定義了一個數值編號。 字符編碼:定義了該數值怎么存儲(用幾個字節(jié)來表示,數值二進制格式(有無特定標示))。 但有時候又可以認為是同一個意思:因為唯一對應。 比如:ASCII、IOS-8859-1、GB2312、GBK等等既是字符集又是字符編碼。 不是同一個意思情況:一個字符集對應多個實現形式。 比如Unicode只是字符集,對應的字符編碼卻有多個: UTF-8、UTF-16、UTF-32 。 補充:
因為歷史原因,最初是一一對應可以看成一個意思,后來出現一對情況拆分兩個意思,
所以有些地方認為是一個意思,有些不這樣認為,存在混淆,得自己明辨是非。 比如:charset也表示字符編碼的意思。 在 html中用charset指定字符集: "UTF-8"> 準確來說UTF-8是字符編碼。 而在xml中用encoding表示字符編碼顯得更加嚴緊: "1.0" encoding="UTF-8"?> 實際我們只要關心字符編碼,因為由它決定存取和傳輸的格式。 值注意:關于Unicode的多重意思。 (1)Unicode 標準 (2)Unicode 字符集 (3)Unicode 的抽象編碼(編號),也即碼點(code point) (4)Unicode 的一個具體編碼實現,通常即為變長的 UTF-16(16 或 32 位),又或者是更早期的定長 16 位的 UCS-2 特別注意java中編碼的問題?。?1.常說的java采用Unicode編碼,用兩個字節(jié)表示字符。 這里的Unicode編碼的意思是用定長UTF-16字符編碼,也就是運行時內存中一個字符用兩個字節(jié)存儲。
2.有時候說java默認是UTF-8編碼.
其實說的是jvm默認編碼是UTF-8,
該編碼默認用處:字符和字節(jié)數據組的轉換,io流轉換。
如果沒有設置jvm默認編碼,那么默認使用操作系統(tǒng)的編碼。
也可以自己更改jvm的編碼:更改JVM參數-Dfile.encoding=UTF-8。