【发布时间】:2017-04-23 07:48:58
【问题描述】:
我使用一个用 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'是无效字符。
感到困惑。
【问题讨论】:
-
Python2 还是 Python3?
-
可能是这个docs.python.org/2/library/functions.html#ord "如果给出了 unicode 参数并且 Python 是使用 UCS2 Unicode 构建的,那么字符的代码点必须在 [0..65535] 范围内;否则字符串长度为 2,会引发 TypeError。”如 1D463 = 119907
-
@Sarcoma,所以,如果我理解正确,值范围应该是 0000 到 FFFF 或 TypeError 被抛出?就我而言,我得到的值大于 FFFF 而不是 TypeError 异常
-
我认为这只适用于使用 UCS2 Unicode 构建的 Python2。
-
到底是什么让你感到困惑???我看不出你在问题中写的任何令人困惑的事情......(除了我对什么是什么让你感到困惑的困惑?)
标签: python python-3.x utf-8