字元亂碼之字符集和字元編碼

2022-05-10 02:04:26 字數 1673 閱讀 4010

最近經常會碰到上傳客戶提供的歷史資料上傳時csv檔案用excel開啟時會有亂碼問題,雖然知道知道是字元編碼不一致導致的,但其中諸多細節卻知之甚少,今日特來理理。

1.為什麼會有字元亂碼問題?如何解決字元亂碼問題

計算機中儲存的資訊都是二進位制數表示的,但是世界上有各種不同的語言文字,所以我們需要一些規則將各種字元轉換成二進位制後儲存在計算機中 即編碼,以及如果將儲存在計算機中的二進位制數解析出來即解碼。就如破譯電報密碼一樣如果密碼本是錯誤的,那麼密碼也是錯誤。會有字元亂碼問題就是因為解碼方式是不對的,要解決亂碼問題一定要知道字元編碼是什麼

掃盲知識點:

字符集(charset):是乙個系統支援的所有抽象字元的集合,字元是各種文字和符號的總稱,包括各種國家文字,標點符號,圖形符號,數字

字型檔表:它儲存了編碼規範中的所有字元,計算機通過計算機就是根據二進位制數從字型檔表中找到字元然後顯示給使用者滴,相當於乙個儲存字元的資料庫

字符集和字型檔表一一對應,相互轉換,這是電腦識別字元的關鍵

字元編碼(charater encoding):是一套法則,使字符集中的自然語言字元(字符集)轉換成計算集可以接受的數字**。

字元解碼:二進位制數從字型檔表中找到字元然後顯示給使用者

字符集和字元編碼的關係:

字符集其實是一套編碼規範中的子概念,為了顯示字元,世界組織就制定了編碼規範,使用不同的二進位制數來表示代表不同的字元,這樣電腦就可以根據二進位制數來顯示其對應的字元。我們通常用編碼規範的名字來稱呼對應的字符集

2.有哪些常見的字元編碼?

乙個位元組(byte)有8位(bit), 乙個字元在不同的編碼中所佔的位元組是不一定的,比如乙個漢字在gbk編碼中佔兩個位元組,但是在utgf-8 中佔3個位元組

3.accept-charset/accept-encoding/accept-language/content-type/content-encoding/content-language

在http中,與字符集和字元編碼相關的訊息頭是accept-charset/content-type,另外主區區分accept-charset/accept-encoding/accept-language/content-type/content-encoding/content-language:

accept-charset:瀏覽器申明自己接收的字符集,這就是本文前面介紹的各種字符集和字元編碼,如gb2312,utf-8(通常我們說charset包括了相應的字元編碼方案);

accept-encoding:瀏覽器申明自己接收的編碼方法,通常指定壓縮方法,是否支援壓縮,支援什麼壓縮方法(gzip,deflate),(注意:這不是只字元編碼);

accept-language:瀏覽器申明自己接收的語言。語言跟字符集的區別:中文是語言,中文有多種字符集,比如big5,gb2312,gbk等等;

content-type:web伺服器告訴瀏覽器自己響應的物件的型別和字符集。例如:content-type: text/html; charset=』gb2312』

content-encoding:web伺服器表明自己使用了什麼壓縮方法(gzip,deflate)壓縮響應中的物件。例如:content-encoding:gzip

content-language:web伺服器告訴瀏覽器自己響應的物件的語言。

抄錄總結自:

字符集和字元編碼

字符集和字元編碼不錯的部落格 字符集 是乙個系統支援的所有抽象字元的集合。字元是各種文字和符號的總稱,包括各國家文字 標點符號 圖形符號 數字等。asicc,unicode,gbk,gb2312等 字元編碼 是一套法則,使用該法則能夠對自然語言的字元的乙個集合 如字母表或音節表 與其他東西的乙個集合...

字符集和字元編碼

字符集 建立文字檔案預設使用ansi,就是系統預設編碼方式,中文window系統預設使用gbk編碼方式 位元組 這是最基本的概念,位元組是計算儲存容量的一種計量單位,我們知道計算機只能識別1和0組成的二進位制位,乙個數就是1位 bit 為了方便計算,我們規定8位就是乙個位元組 字元 字元和位元組不太...

字元編碼和字符集

計算機中儲存的資訊都是用二進位制數表示的,而我們在螢幕上看到的數字 英文 標點符號 漢字等字元是二進位制數轉換之後的結果。按照某種規則,將字元儲存到計算機中,稱為編碼。反之,將儲存在計算機中的二進位制數按照某種規則解析顯示出來,稱為解碼。亂碼的根本原因 按照a規則儲存,同樣按照a規則解析,那麼就能顯...