[Python] String 轉碼技巧

程式語言:Python

簡介:一些轉碼的技巧

強制編碼輸出

運用強制指定編碼 encode 成 unicode,並忽略或 ? 取代,再 decode 回來
s = '測試abc'

s.encode('ascii', 'ignore').decode('ascii')
# 'abc'

s.encode('ascii', 'replace').decode('ascii')
# '??abc'

String byte to UTF-8

因 latin-1 是 lossless 的 8-bit encoding,所以在實務上可以把一個只包含 single-byte characters 的 Unicode 內容直接 map 到同樣 byte sequence 的 encoded data
s = '測試abc'
sb = s.encode() # b'\xe6\xb8\xac\xe8\xa9\xa6abc'
sbs = sb.decode('latin-1') # '\xe6\xb8\xac\xe8\xa9\xa6abc'
ss = sbs.encode('latin-1').decode() # '測試abc'

Byte String to UTF-8

利用 eval()
s = '測試 abc'
bs = str(s.encode()) # "b'\\xe6\\xb8\\xac\\xe8\\xa9\\xa6 abc'"
ss = eval(bs).decode() # '測試 abc'

參考

淺談電腦編碼與 Unicode (一) 基礎概念篇

留言