官术网_书友最值得收藏!

5.2 字符串的編碼轉(zhuǎn)換

微視頻

在Python 3.x中,默認(rèn)采用的編碼格式為UTF-8。采用這種編碼有效地解決了中文亂碼的問題。UTF-8是國際通用編碼,采用1字節(jié)表示英文字符,3字節(jié)表示中文。

在Python中,有兩種常用的字符串類型,分別為str和bytes。其中,str表示Unicode字符;bytes表示二進(jìn)制數(shù)據(jù)。這兩種類型的字符串不能拼接在一起使用。str在內(nèi)存中以Unicode表示,一個(gè)字符對(duì)應(yīng)若干字節(jié)。如果在網(wǎng)絡(luò)上傳輸或者保存在磁盤上,就需要把str轉(zhuǎn)換成bytes類型,既字節(jié)類型。

大牛提醒

bytes類型的數(shù)據(jù)是帶有b前綴的字符串。例如,b'\xe4\xba\xba\xe7\x94\x9f\xe8就是bytes類型的數(shù)據(jù)。

str類型和bytes類型之間可以通過encode()和decode()方法進(jìn)行轉(zhuǎn)換,這兩個(gè)方法是互逆的過程。

encode()方法以指定的編碼格式編碼字符串。語法格式如下:

    str.encode(encoding='UTF-8',errors='strict')

參數(shù)encoding為要使用的編碼方式,默認(rèn)值為UTF-8;參數(shù)errors可以指定不同的錯(cuò)誤處理方案。該方法返回編碼后的字符串。

大牛提醒

encode()方法只是修改了字符串的編碼方式,并不會(huì)修改字符串的內(nèi)容。

decode()方法以指定的編碼格式解碼bytes對(duì)象。語法格式如下:

    bytes.decode(encoding="utf-8", errors="strict")

參數(shù)encoding為要使用的編碼方式,默認(rèn)值為UTF-8;參數(shù)errors可以指定不同的錯(cuò)誤處理方案。該方法返回解碼后的字符串。

【例5.4】字符串的編碼和解碼(源代碼\ch05\5.4.py)。

    str = "人生苦短我學(xué)Python";
    str_utf8 = str.encode("UTF-8")
    str_gb2312 = str.encode("GB2312")
    print(str)
    print("UTF-8   編碼:", str_utf8)
    print("GB2312編碼:", str_gb2312)
    print("UTF-8   解碼:", str_utf8.decode('UTF-8','strict'))
    print("GB2312   解碼:", str_gb2312.decode('GB2312','strict'))

程序運(yùn)行結(jié)果如圖5-4所示。

圖5-4 例5.4的程序運(yùn)行結(jié)果

主站蜘蛛池模板: 广昌县| 盐边县| 三河市| 溧阳市| 探索| 湄潭县| 通州市| 永胜县| 德保县| 乐平市| 红桥区| 三台县| 阿拉善右旗| 南木林县| 如皋市| 正安县| 临漳县| 盐亭县| 巨鹿县| 旌德县| 札达县| 韩城市| 闻喜县| 安泽县| 黑河市| 新宁县| 尼玛县| 怀安县| 梅河口市| 玉林市| 聂荣县| 宜州市| 玉林市| 公安县| 临沂市| 瑞昌市| 大悟县| 桑植县| 万安县| 青阳县| 葵青区|