簡體   English   中英

Python utf-8字符范圍

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM