我使用一个用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