Java系統內的字符以雙字節存儲,采用unicode(utf-16之一)編碼。(估計jdk后續版本的java字符編碼可能提升為4字節,這樣可徹底解決東方國家字庫問題。)
Utf-8是一種標準存儲編碼格式,用utf-8編碼后的字節流具有非常好的防(糾)錯和兼容能力。用utf-8編碼(encode)unicode碼時不會有信息損失。當然用utf-8解碼(decode)utf-8編碼的字節流,生成unicode碼時也不會有信息損失。但禁止用utf-8解碼非utf-8編碼的字節流??傊甎tf-8可以編碼任何unicode 碼,但只能解碼utf-8編碼的字節流。
Utf-16和utf-8用法是一樣的,僅是一點不同:utf-16是雙字節倍數編碼,utf-8是單字節倍數編碼,在英文國家里用utf-8和ascii編碼后的字節流是一樣的,這樣有利于系統平穩升級到支持utf-8的系統里,但系統要升級到支持utf-16就要把所有數據都更新一遍,這顯然不能接受。注意:utf-16根據字節排序不同有兩種編碼
原文轉自:http://www.anti-gravitydesign.com