我试图在一个类似于myString = "███ ███ J ██"
的字符串中获得'J'的索引,所以我使用myString.find('J')
,但它返回一个非常高的值,如果我用'M'或字母表的另一个字符替换'█',我得到一个较低的值。我真的不明白这是什么原因。
尝试myString = u"███ ███ J ██"
。这将使其成为Unicode字符串,而不是python 2。
如果您正在从文件或类文件对象中读取它,则不执行file.read()
,执行file.read().encode('utf-8-sig')
。
检查编码运行:python -c 'import sys; print(sys.getdefaultencoding())'
适用于Python 2。输出是ascii
,这是您的程序的默认编码。为了使用一些非ascii字符,开发人员预测了unicode()类型。你自己看吧。只需创建一个变量myString = u"███ ███ J ██"
,并遵循它的.find('J')
方法。这个u
前缀告诉解释器它处理unicode编码的字符串。然后,您可以像使用普通str一样使用该变量。
我在一些应该写UTF-8的地方使用了Unicode。如果你想的话,可以看看这个答案。
Unicode是Python 3中的默认编码。
检查您正在使用的控制台/ssh客户端的设置。设置为UTF-8