Strange characters, Python said TypeError: ord() expected a character, but string of length X found
Strange characters, Python said TypeError: ord() expected a character, but string of length X found
我刚刚从某人 (https://paste.villavu.com/show/2991/) 那里发现了一组我从未见过的奇怪字符(这些字符由 space 分隔)。那个人说那个字符集中的一个字符可以用来在 Twitch、Discord 等中使一个人的名字字段空白,这样他们就会像没有名字一样显示。
我试图通过使用 Python 的 ord()
来弄清楚这些字符到底是什么。但是我得到了 TypeError: ord() expected a character, but string of length X found
尽管我只为 ord()
参数输入了 1 个字符并且所有的东西看起来都是有效的。
我正在从那个字符集中取出一个字符,并尝试将其放入 ord()
>>> ord(' ')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: ord() expected a character, but string of length 3 found
然后我继续假设奇怪的字符是一组字符。
>>> ' '[0]
'\ufeff'
>>> ' '[1]
' '
>>> ' '[2]
'\ufeff'
根据我的发现,\ufeff
是一个字节顺序标记(来自 here)。但这对我来说仍然没有意义,尤其是关于如何将这些字符打包在一起,所以它似乎只是我计算机中的 1 个字符。
以及为什么有些平台将其视为有效值,例如名称。
有人可以向我解释一下吗?
除了用作 BOM(已经 ), U+FEFF is also the (deprecated) ZWNBSP,这就是为什么它很难通过指针选择来检测。因为它在(或已经)在 运行 文本中使用,它在用户名中接受它是合理的,但显然这种用法可能会造成混淆(对于很多 Unicode 字符)。
我刚刚从某人 (https://paste.villavu.com/show/2991/) 那里发现了一组我从未见过的奇怪字符(这些字符由 space 分隔)。那个人说那个字符集中的一个字符可以用来在 Twitch、Discord 等中使一个人的名字字段空白,这样他们就会像没有名字一样显示。
我试图通过使用 Python 的 ord()
来弄清楚这些字符到底是什么。但是我得到了 TypeError: ord() expected a character, but string of length X found
尽管我只为 ord()
参数输入了 1 个字符并且所有的东西看起来都是有效的。
我正在从那个字符集中取出一个字符,并尝试将其放入 ord()
>>> ord(' ')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: ord() expected a character, but string of length 3 found
然后我继续假设奇怪的字符是一组字符。
>>> ' '[0]
'\ufeff'
>>> ' '[1]
' '
>>> ' '[2]
'\ufeff'
根据我的发现,\ufeff
是一个字节顺序标记(来自 here)。但这对我来说仍然没有意义,尤其是关于如何将这些字符打包在一起,所以它似乎只是我计算机中的 1 个字符。
以及为什么有些平台将其视为有效值,例如名称。
有人可以向我解释一下吗?
除了用作 BOM(已经