做用:表語英語及西歐語言。java
位數:ASCII是用7位表示的,能表示128個字符;其擴展使用8位表示,表示256個字符。web
範圍:ASCII從00到7F,擴展從00到FF。編碼
做用:擴展ASCII,表示西歐、希臘語等。spa
位數:8位, 範圍:從00到FF,兼容ASCII字符集。翻譯
做用:國家簡體中文字符集,兼容ASCII。orm
位數:使用2個字節表示,能表示7445個符號,包括6763個漢字,幾乎覆蓋全部高頻率漢字。blog
範圍:高字節從A1到F7, 低字節從A1到FE。將高字節和低字節分別加上0XA0便可獲得編碼。utf-8
做用:它是GB2312的擴展,加入對繁體字的支持,兼容GB2312。ci
位數:使用2個字節表示,可表示21886個字符。字符串
範圍:高字節從81到FE,低字節從40到FE。
做用:爲世界650種語言進行統一編碼,兼容ISO-8859-1。
位數:UNICODE字符集有多個編碼方式,分別是UTF-8,UTF-16和UTF-32。
做用:統一繁體字編碼。
位數:使用2個字節表示,表示13053個漢字。
範圍:高字節從A1到F9,低字節從40到7E,A1到FE。
做用:它解決了中文、日文、朝鮮語等的編碼,兼容GBK。
位數:它採用變字節表示(1 ASCII,2,4字節)。可表示27484個文字。
範圍:1字節從00到7F; 2字節高字節從81到FE,低字節從40到7E和80到FE;4字節第一三字節從81到FE,第二四字節從30到39。
做用:國際標準 ISO 10646 定義了通用字符集 (Universal Character Set)。它是與UNICODE同類的組織,UCS-2和UNICODE兼容。
位數:它有UCS-2和UCS-4兩種格式,分別是2字節和4字節。
範圍:目前,UCS-4只是在UCS-2前面加了0x0000。
語言 | 字符集 | 正式名稱 |
英語、西歐語ASCII | ISO-8859-1 | MBCS 多字節 |
簡體中文 | GB2312 | MBCS 多字節 |
繁體中文 | BIG5 | MBCS 多字節 |
簡繁中文 | GBK | MBCS 多字節 |
中文、日文及朝鮮語 | GB18030 | MBCS 多字節 |
各國語言 | UNICODE,UCS | DBCS 寬字節 |
要求:要知道當前內容的編碼格式和要轉換爲的編碼格式:
示例:
String username = request.getParameter("username").trim(); String password = request.getParameter("password").trim();
獲取到的String類型變量:username和password的編碼格式爲:ISO-8859-1
如何將他們轉換成UTF-8編碼,不要出現亂碼,代碼以下:
String parameter = request.getParameter("username"); //獲取到參數對應的二進制數 byte[] temp = parameter.getBytes("iso-8859-1"); //經過對應的二進制數 手動編碼成utf-8的字符串 String param = new String(temp, "utf-8");
原理:
相同的內容在計算機中的二進制編碼是同樣的,因此在不一樣編碼間內容傳遞時,要想不出現亂碼,先將該內容按其原編碼轉換爲二進制序列。而後再將這個二進制序列按照要轉換的編碼進行翻譯,就不會出現亂碼。
出現的亂碼形式的含義:
?????? ---> 表明字符編碼不匹配形成
å¸é¾ ---> 表明沒有該編碼方式