[Python] 淺談字元碼位 (Code Point) 及相關函式

字元碼位?就是每個字元的編碼位置,可以想成是每個字元的身分證,只要知道那個字元,就能知道它的碼位;反之亦然。

雖然目前有這麼多種編碼,而每種編碼中的碼位都不同,我們應該每種都學嗎?幸運的是 Python 3 把字串跟 Unicode 做了整合,所以我們接下來所談的部分會專注於 Unicode 這個編碼上。


  • ord() 與 chr()
在 Python 中,可以使用 ord() 函式取得某個字元的碼位:
print(ord('1'))
# 49
print(ord('N'))
# 78
print(ord('你'))
# 20320

然後我們可以把這個碼位丟進 chr() 函式獲取該碼位的字元:
print(chr(49))
# '1'
print(chr(78))
# 'N'
print(chr(20320))
# '你'
請配著上面的範例食用(?)


  • 轉義-使用碼位
可能有人會看過什麼 \???、\x??、\u???? 之類的東西,可是看都看不懂,這其實是使用了碼位來進行字串的轉義,我們來看看 Python 中 Unicode 字元的轉義:
  1. \ _ _ _:以8進位的碼位來表示字元,最多3位數
  2. \x_ _:以16進位的碼位來表示字元,基本上2位數
  3. \u_ _ _ _:以16位元的16進位數值代表碼位
  4. \U_ _ _ _ _ _ _ _:同上,只是這是32位元的數值
print('\116')  # 116(8) == 78(10)
# N
print('\x31')  # 31(16) == 49(10)
# 1
print('\u4F60')  # 4F60(16) == 20320(10)
# '你'
print('\U00004F60')
# '你'

留言

這個網誌中的熱門文章

[C] 每天來點字串用法 (2) - strcpy()、strncpy()

[Python] *args 和 **kwargs 是什麼?一次搞懂它們!

[C] 每天來點字串用法 (5) - strcat()、strncat()