[英]Python utf-8 character range
我使用一個用utf-8編碼的文本文件,並用python讀取它的內容。 閱讀完內容后,我將文本拆分為字符數組。
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'是無效字符。
困惑。
您似乎使用
\\u\u003c/code>而不是
\\U
轉義了Unicode代碼點(U + 1D463)。 前者需要四個十六進制數字,后者需要八個十六進制數字。 根據Microsoft Visual Studio:
The condition was ch == '\ᵆ3'
當我在Python解釋器中使用這個文字時,它沒有抱怨,但是它快樂地逃脫前四個十六進制數字,並且在cmd中運行時正常打印3個:
>>> print('\ᵆ3') ᵆ3
您遇到此異常: Expected max value - FFFF. Actual character value - 1D463
Expected max value - FFFF. Actual character value - 1D463
因為您使用的是不正確的unicode轉義,請使用\\U0001D463
而不是\ᵆ3
。 為字符碼點中的最大值\\u\u003c/code>是\
和最大值\\U
是\\UFFFFFFFF
。
注意\\U0001D463
的前導零, \\U
正好取八個十六進制數字, \\u\u003c/code> 正好取四個十六進制數字:
>>> '\\U1D463' File "<stdin>", line 1 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-6: truncated \\UXXXXXXXX escape >>> '\\uFF\u0026#39; File "<stdin>", line 1 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-3: truncated \\uXXXX escape
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.