国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python中文編碼與json中文輸出問題詳解

2020-02-15 22:48:16
字體:
供稿:網(wǎng)友

前言

python2.x版本的字符編碼有時(shí)讓人很頭疼,遇到問題,網(wǎng)上方法可以解決錯誤,但對原理還是一知半解,本文主要介紹 python 中字符串處理的原理,附帶解決 json 文件輸出時(shí),顯示中文而非 unicode 問題。首先簡要介紹字符串編碼的歷史,其次,講解 python 對于字符串的處理,及編碼的檢測與轉(zhuǎn)換,最后,介紹 python 爬蟲采取的 json 數(shù)據(jù)存入文件時(shí)中文輸出的問題。

參考書籍:Python網(wǎng)絡(luò)爬蟲從入門到實(shí)踐 by唐松

在python 2或者3 ,字符串編碼只有兩類 :

(1)通用的Unicode編碼;

(2)將Unicode轉(zhuǎn)化為某種類型的編碼,如UTF-8,GBK;

1、計(jì)算機(jī)歷史:

計(jì)算機(jī)只處理數(shù)字,因此處理文本時(shí),必須轉(zhuǎn)換成數(shù)字才行。

8位(bit)=1字節(jié)(byte)=256種不同狀態(tài)=從000000到111111;

1GB=1024M=1024(1024kb)=1024(1024(1024b));

ASCII編碼 是對應(yīng)英文字符與二進(jìn)制數(shù)字之間的關(guān)系;ASCII一共規(guī)定了128種,如大寫字母A是65,即01000001;可見一字母一字節(jié);

GB2312編碼 簡體中文常見的編碼,兩個(gè)字節(jié)代表一個(gè)中文漢字 ,理論上256*256個(gè)編碼,即可表示65536種中文字;

各國編碼不同,為了各國能擴(kuò)平臺進(jìn)行文本的轉(zhuǎn)換與處理,Unicode就被作為統(tǒng)一碼或者單一碼。Unicode編碼通常是兩個(gè)字節(jié),unicode與ASCII編碼的區(qū)別,在于unicode在ASCII編碼前加了一個(gè)0,即字母A的ASCII編碼為01000001,unicode編碼即為0000000001000001;但英文字母其實(shí)只用一個(gè)字節(jié)就夠了,unicode編碼寫英文時(shí)多了一個(gè)字節(jié),浪費(fèi)存儲空間。因而unicode開發(fā)了通用轉(zhuǎn)換格式(Unicode Transformation Format(UTF)),常見的有utf-8或者utf-16;

要明白encode()和decode()的區(qū)別

encode()的作用是將Unicode編碼的字符串轉(zhuǎn)換為其他編碼格式。

例如: st1.encode("utf-8") 這句話的作用是將Unicode編碼的st1編碼為utf-8編碼的字符串

decode()的作用是把其他編碼格式的字符串轉(zhuǎn)換成Unicode編碼的字符串。

例如: st2.decode("utf-8") 這句話的作用是將utf-8編碼的字符串st2解碼為Unicode編碼的字符串

第二,除Unicode編碼的字符串以外,任何一種編碼的字符串要想轉(zhuǎn)換為其他編碼格式,必須先解碼后編碼

非Unicode編碼--> Unicode編碼-->非Unicode編碼

例如,utf-8編碼的字符串st想要轉(zhuǎn)換為gbk編碼的字符串,必須經(jīng)過以下步驟:

st=st.decode("utf-8") #解碼為Unicode編碼st=st.encode("gbk") #從Unicode編碼編碼為gbk編碼

第三,我們經(jīng)常使用的utf-8編碼還分為有BOM的和無BOM的。

第四:關(guān)于json文件的中文編碼。用Python讀取Json文件時(shí)經(jīng)常用到j(luò)son.load()函數(shù),該函數(shù)對json文件的格式是有要求的

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 哈巴河县| 涡阳县| 崇左市| 兴仁县| 五原县| 宿松县| 马边| 马龙县| 封开县| 博白县| 元氏县| 澎湖县| 三江| 浮山县| 乌兰浩特市| 泾阳县| 临颍县| 贺兰县| 莲花县| 泾阳县| 墨脱县| 东安县| 前郭尔| 饶河县| 扬中市| 南通市| 广西| 崇明县| 秦皇岛市| 读书| 高台县| 涪陵区| 进贤县| 民乐县| 西丰县| 邹平县| 大足县| 塔河县| 稻城县| 天长市| 房山区|