1.常用字符編碼
在計算機的世界裏面,所有的文字都是通過編碼來描述的。對於編碼而言,如果沒有正確的解碼,那麼就會產生亂碼。
那麼要想避免亂碼問題,就必須清楚常見的編碼有哪些
- GBK、GB2312:表示的是國標編碼,GBK包含簡體中文和繁體中文,而GB2312只包含簡體中文。也就
是說,這兩種編碼都是描述中文的編碼。 - UNICODE編碼:java提供的16進制編碼,可以描述世界上任意的文字信息,但是有個問題,如果現在
所有的字母也都使用16進制編碼,那麼這個編碼太龐大了,會造成網絡傳輸的負擔。 - ISO8859-1:國際通用編碼,但是所有的編碼都需要進行轉換。
- UTF編碼:相當於結合了UNICODE、ISO8859-1,也就是說需要使用到16進制文字使用UNICODE,而
如果只是字母就使用ISO8859-1,而常用的就是UTF-8編碼形式。
在以後的開發之中使用的編碼只有一個:UTF-8編碼
2.亂碼產生分析
清楚了常用編碼後,下面就可以觀察一下亂碼的產生。要想觀察出亂碼,就必須首先知道當前操作系統中默認支持的編碼是什麼(java默認編碼)
範例:讀取java運行屬性
System.getProperties().list(System.out);
如果說現在本地系統所用的編碼與程序所用編碼不同,那麼強制轉換就會出現亂碼。
範例:觀察亂碼產生
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
public class Test {
public static void main(String[] args) throws UnsupportedEncodingException,
IOException {
OutputStream out = new FileOutputStream(new
File("/Users/yuisama/Desktop/hello.txt")) ;
out.write("比特歡迎您".getBytes("ISO8859-1")) ;
out.close();
}
}
亂碼產生的本質:編碼和解碼不統一產生的問題。