Python源代码编码不起作用
在我的Paspberry上,我在Python2.7下运行了一个Python脚本 我想将一些字符串文字声明为Latin-1,而不是UTF-8Python源代码编码不起作用,python,string,encoding,Python,String,Encoding,在我的Paspberry上,我在Python2.7下运行了一个Python脚本 我想将一些字符串文字声明为Latin-1,而不是UTF-8 s = 'äöü' print '%s %d' %(s, len(s)) print '%x %x %x %x %x %x' % (ord(s[0]), ord(s[1]), ord(s[2]), ord(s[3]), ord(s[4]), ord(s[5])) 因此,我添加了声明 # -*- coding: latin-1 -*-
s = 'äöü'
print '%s %d' %(s, len(s))
print '%x %x %x %x %x %x' % (ord(s[0]), ord(s[1]), ord(s[2]), ord(s[3]), ord(s[4]), ord(s[5]))
因此,我添加了声明
# -*- coding: latin-1 -*-
在我文件的开头。但是不管我使用哪种编码,下面的代码片段总是将我的字符串声明为UTF-8
s = 'äöü'
print '%s %d' %(s, len(s))
print '%x %x %x %x %x %x' % (ord(s[0]), ord(s[1]), ord(s[2]), ord(s[3]), ord(s[4]), ord(s[5]))
始终向我展示:
äöü 6
c3 a4 c3 b6 c3 bc
使用拉丁1编码声明字符串文字的正确方法是什么,即在我的例子中,我希望字符串包含3个字符:0xe4、0xf6、0xfc?如果我理解,您可以使用:
s.encode('latin-1');
为了你的问题
例如:
>>> s = u'ééé'.encode('latin1')
>>> s.decode('latin1')
u'\xe9\xe9\xe9'
如果你能做到,请给我反馈
'\xe4\xf6\xfc'
是包含指定的3个字节的字节字符串
至于为什么编码不正确,这取决于编辑器如何保存文件。您可能希望通过查看源文件来检查是否使用拉丁语1保存它。是的,我所寻找的bot可以使用一个更简单的解决方案来指定一些纯字符串文本。有多简单?更具体一点,也许我可以帮助你。好吧,也许我不理解python的哲学。在其他(基于C的)语言中,我声明char s[]='äöü',并得到一个精确为3个字符的字符串。Python似乎在这方面发挥了一些“魔力”;但也许这是我不明白的一个特点。但文件开头的编码注释比什么更重要?无论我指定了什么,它都不会改变任何东西-utf-8或拉丁语-1。