天天看點

字元編碼|學習筆記

開發者學堂課程【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。