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

首頁 > 編程 > Python > 正文

Python字符編碼轉碼之GBK,UTF8互轉

2020-02-15 21:18:31
字體:
來源:轉載
供稿:網友

一、Python字符編碼介紹

1、須知:

在python 2中默認編碼是 ASCII,而在python 3中默認編碼是 unicode

unicode 分為utf-32 (占4個字節),utf-16(占兩個字節),utf-8(占1-4個字節),所以utf-16 是最常用的unicode版本,但是在文件里存的還是utf-8,因為utf8省空間

在python 3,encode編碼的同時會把stringl變成bytes類型,decode解碼的同時會把bytes類型變成string類型

在unicode編碼中 1個中文字符=2個字節,1個英文字符 = 1個字節,切記:ASCII是不能存中文字符的

utf-8是可變長字符編碼,它是unicode的優化,所有的英文字符依然按ASCII形式存儲,所有的中文字符統一是3個字節

unicode包含了所有國家的字符編碼,不同字符編碼之間的轉換都需要經過unicode的過程

python本身的默認編碼是utf-8

2、py2中的編碼和轉碼的過程,如圖:

注:因為unicode是中間編碼,任何字符編碼之前的轉換都必須解碼成unicode,在編碼成需要轉的字符編碼

二、字符編碼的轉換

1、py2字符編碼的轉換,代碼如下:

#! /usr/bin/env python# -*- coding:utf-8 -*-# __auther__ == luoahong s = "我是學員"#utf-8解碼成unicode編碼s_to_unicode = s.decode("utf-8")print("--------s_to_unicode-----")print(s_to_unicode)#然后unicode再編碼成gbks_to_gbk = s_to_unicode.encode("gbk")print("-----s_to_gbk------")print(s_to_gbk)#gbk解碼成unicode再編碼成utf-8gbk_to_utf8 = s_to_gbk.decode("gbk").encode("utf-8")print("------gbk_to_utf8-----")print(gbk_to_utf8) #輸出--------s_to_unicode-----我是學員-----s_to_gbk------�����˧------gbk_to_utf8-----我是學員

 注:以上這種情況適合字符是非unicode編碼請款下,但是如果字符編碼已經是Unicode的了咋辦呢?廣告回來,更加精彩。。。。。

2、字符編碼已經是unicode情況下,代碼如下:

#! /usr/bin/env python# -*- coding:utf-8 -*-# __auther__ == luoahong #u代碼字符編碼是unicodes = u'你好'#已經是unicode,所以這邊直接是編碼成gbks_to_gbk = s.encode("gbk")print("----s_to_gbk----")print(s_to_gbk)#這邊再解碼成unicode然后再編碼成utf-8gbk_to_utf8 = s_to_gbk.decode("gbk").encode("utf-8")print("-----gbk_to_utf8---")print(gbk_to_utf8)#輸出----s_to_gbk----���-----gbk_to_utf8---你好

注:在python2中,在文件的開頭指定字符編碼,是要告訴解釋器我現在的字符編碼使用的是utf-8,那我在打印的中文時候,那么在utf-8中包含中文字符,那么可以打印出來。那么如果你不制定字符編碼,默認使用系統編碼,如果你的系統編碼是ASCII,那么就會報錯,因為ASCII不能存中文字符。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南充市| 天门市| 宁陕县| 库伦旗| 鞍山市| 开封县| 华容县| 贞丰县| 合山市| 格尔木市| 瑞安市| 金山区| 孝义市| 古丈县| 新乐市| 达尔| 营山县| 南郑县| 阿克陶县| 长武县| 玛曲县| 都昌县| 泽普县| 乐安县| 丹阳市| 张掖市| 通化市| 原阳县| 仁寿县| 中卫市| 武义县| 图们市| 黑龙江省| 信阳市| 青海省| 阳西县| 德兴市| 资源县| 吉木乃县| 浮山县| 邵武市|