PyCon 2015 Crawler Tutorial Explain Encoding

Post on 12-Aug-2015

81 views 1 download

Transcript of PyCon 2015 Crawler Tutorial Explain Encoding

Encodingb'\xe6\x96\x87\xe5\xad\x97\xe7\xb7\xa8\xe7\xa2\xbc'

先來回想⼀一下...

先來回想⼀一下...

當學⽣生的時候⼀一定想過要怎麼跟隔壁同學作弊...

Morse Code

A: ・__

B: __・・・

C: __・__・

D: __・・

Morse Code

A: ・__

B: __・・・

C: __・__・

D: __・・

嗶嗶—

嗶—嗶嗶嗶

嗶—嗶嗶—嗶

嗶—嗶嗶

Morse Code

A: ・__

B: __・・・

C: __・__・

D: __・・

左右

右左左左

右左右左

右左左

Encode / Decode

Encode / Decode

Encode / Decode

Encode

左右

Encode / Decode

Encode

左右 左右

Transport

Encode / Decode

Encode

左右 左右

DecodeTransport

Encode / Decode

50 59 43 4F 4EPYCONText Bytes (8 bits)Encode

Writing

ReadingBytes

50 59 43 4F 4E

Decode Text

PYCON

Encode / Decode in the web

Encode / Decode in the web

HTML Documents

Encode

Bytes

Server

Encode / Decode in the web

HTML Documents

Encode

Bytes

Transport

Server Internet

Encode / Decode in the web

HTML Documents

Encode

Bytes

Transport

Server Internet

DecodeClient

Character Encoding

先回到剛剛的例⼦子,⽤用摩斯電碼作弊

Character Encoding

如果我們把Morse Code ABCD 換成 1234 呢

Character Encoding

A: ・— — — —

B: ・・— — —

C: ・・・— —

D: ・・・・—

左右右右右

左左右右右

左左左右右

左左左左右

Character Encoding

我們把第⼀一種叫做Morse ABCD 第⼆二種叫做Morse 1234

Character Encoding

如果踢椅⼦子的⼈人⽤用Morse ABCD encode

被踢椅⼦子的⼈人⽤用Morse 1234 decode

Character Encoding

Character Encoding

Character Encoding

Encode

左右Morse ABCD

Character Encoding

Encode

左右 左右

Transport

Morse ABCD

Character Encoding

Encode

左右 左右

DecodeTransport

Morse ABCD Morse 1234

Character Encoding

Character Encoding

HTML Documents

Encode

Bytes

Server

Big5

Character Encoding

HTML Documents

Encode

Bytes

Transport

Server Internet

Big5

Character Encoding

HTML Documents

Encode

Bytes

Transport

Server Internet

DecodeClient

Big5

UTF-8

Character Encoding

UTF-8: ⽬目前最廣泛的編碼系統 實作Unicode的⽅方法之⼀一 (Unicode 又稱萬國碼)

ASCII: 早期最廣泛的編碼系統 ⽬目前多被Unicode取代

Big5: ASCII不⽀支援中⽂文 所以早期台灣中⽂文網站會⽤用Big5

Character Encoding

⽤用哪種⽅方法encode就要⽤用哪種⽅方法decode!

Character Encoding

這樣才能成功作弊!

Character Encoding

在Chrome裡可以⽤用 檢視 > 字元編碼 來重設網⾴頁的編碼⽅方式

Character Encoding

http://www.angelfire.com/ok/leekawo/hacker.htm

讓這個網⾴頁變成可看的中⽂文!

Encoding in Python

在Python中練習 encode / decode 技巧

Encoding in Python

Python 的 string 以 Unicode 為標準

bytes 即為 string encode 的結果!