我使用一個用utf-8編碼的文本文件,並用python讀取它的內容。閱讀內容後,我將文本分割爲字符數組。Python UTF-8字符範圍
import codecs
with codecs.open(fullpath,'r',encoding='utf8') as f:
text = f.read()
# Split the 'text' to characters
現在,我對每個字符進行迭代。首先,將其轉換爲十六進制表示並在其上運行一些代碼。
numerialValue = ord(char)
我注意到在所有這些字符之間,有些字符超出了預期的範圍。
預期的最大值-FFFF。 實際字符值 - 1D463。
我把這段代碼翻譯成了python。原始源代碼來自C#,其值'\ u1D463'是無效字符。
混淆。
Python2或Python3? – Sarcoma
難道是這個https://docs.python.org/2/library/functions.html#ord「如果給出了一個unicode參數,並且Python是用UCS2 Unicode編譯的,那麼這個字符的代碼點必須在[ 0..65535];否則字符串長度爲2,並且會引發TypeError。「因爲1D463 = 119907 – Sarcoma
@Sarcoma,所以,如果我明白它的意思,值範圍應該是0000到FFFF或TypeError被拋出?在我的情況下,我得到的值大於FFFF,而不是TypeError異常 – No1Lives4Ever