gb18030與utf-8
阿新 • • 發佈:2018-11-01
今天在跟著嵩天老師學習詞雲模組的過程中遇到了編碼問題:UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1:invalid start byte。百度之後,發現如下兩種方法:
一、把編碼方式utf-8 修改為gb18030
二、把原來的txt檔案重新開啟另存為的時候,把編碼方式修改為utf-8,然後程式碼的encoding=‘utf-8’保持不變即可
我都跟著做了,兩種都成功了,程式碼和效果如下,還不錯!
1 #GovRptWordCloudv1.py 2 importjieba 3 import wordcloud 4 5 f = open("新時代中國特色社會主義.txt",'r',encoding = "gb18030") 6 f = open("新時代中國特色社會主義.txt",'r',encoding = "utf-8") 7 t = f.read() 8 f.close() 9 ls = jieba.lcut(t) 10 txt = " ".join(ls) 11 w = wordcloud.WordCloud(font_path = "msyh.ttc",width =1000,height = 700,background_color = 'white') 12 w.generate(txt) 13 w.to_file('grwordcloud1.png')
然後,順便又查了gb18030與utf-8二者的區別:
1.UTF-8:即國際通用字元編碼,該編碼方式囊括了世界各個國家及地區使用的字符集,尤其是對於英文字母的表示方法僅佔用一個位元組,很好的支援了歐美等國家的需要。優點:為了統一世界上各種編碼而設計,通用性強。缺點:為了兼顧世界所有語言的字元,必須採用多位給字元編號,例如中文字符采用3位元組編碼方式,二gb18030採用2位元組。
2.gb18030:是新出的國家標準。這個標準由國家強制執行(也是為了保證中國資訊業的地位,以及爭取一定的主動權),所以所有在中國大陸銷售的作業系統必須支援gb18030。現在的Gb18030不僅包含了簡體和繁體漢字,支援中國少數名族文字,還包含了日韓等國的象形文字。優點:相容性好,與以前的國標碼都相容。缺點:對英文字母需要2個位元組的編碼。