開發者學堂課程【Java 進階程式設計:字元編碼】學習筆記,與課程緊密聯系,讓使用者快速學習知識。
課程位址:
https://developer.aliyun.com/learning/course/20/detail/320字元編碼
内容簡介:
一、 列出本機屬性
二、 編寫程式
三、 強制性設定編碼
在計算機的世界裡面,隻認 0、1 的資料,如果要想描述一些文字的編碼,就需要對這些二進制的資料進行組合,是以才有了現在可以看見的中文。
但是在進行編碼的時候,如果要想正确解釋出内容,則一定需要有解碼,是以編碼和解碼肯定要采用同一标準,如果不統一的時候,就會出現亂碼。
是以編碼的統一是解決出現亂碼的唯一途徑。那麼在實際的開發之中,對于常用的編碼,有如下幾種:
1、GBK/GB2312 國标編碼,可以描述中文資訊,其中 GB2312 隻描述簡體中文,而 GBK 包含有簡體中文與繁體中文。
2、ISO8859_1 國際通用編碼,可以描述所有文字資訊,但如果處理不當,也會出現亂碼。
3、Unicode 編碼采用 16 進制的方式存儲,可以描述所有的文字資訊。其有一個最大的缺點就是大。
4、UTF 編碼象形文字部分使用16進制編碼,而普通的字母采用的是 ISO8859-1 編碼,它的優勢在于适合于快速的傳輸,節約帶寬,這也就成為了在開發之中首選的編碼。存在 UTF16 和 UTF_8,其中主要使用 utf-8 編碼。
如果要想知道目前系統中支援的編碼規則,則可以使用如下代碼列出全部的本機屬性。
範例:列出本機屬性
package cn.mldn.demo;
public class JavaAPIDemo {
public static void main(String[] args) throws Exception
System.getProperties().list(System.out);
}
}
以上資訊都屬于本機的操作屬性,其中包括檔案路徑分割符、檔案預設編碼方式,也就是說如果現在什麼都不設定,則采用的編碼就是 Utf-8。
範例:編寫程式
package cn.mldn.demo;
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
import java.io.FileOutputStream;
import java.io.OutputStream;
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
OutputStream output = new FileOutputStream("D:" + File.separato
output.write(”中華人民共和國萬y"RetB)~~
此時沒有設定編碼,代碼運作結果還是正常編碼。此時為預設的處理操作,是以可以正常進行顯示,不設定編碼的時候,就将采用預設的編碼方式進行。
三.強制性設定編碼
範例:強制性設定編碼
import java.io.File;
import java.io.FileoutputStream;
import java.io.OutputStream;
public class JavaAPIDemo {
public static void main(String[] args)throws Exception {
OutputStream output = new FileOutputStream("D:" + File.separatoroutput.write(“中華人民共和國萬歲".getBytes("UTF-s"));
Ioutput.close();
代碼仍然是正常執行。因為強制設定的編碼也還是預設編碼,但如果設定其他編碼,就将會出現亂碼。
getByte(“ISO8859-1”));
項目中出現的亂碼問題,就是編碼和解碼标準不統一,而最好的解決亂碼的方式,所有的編碼都用 Utf-8。