Python源代码编码不起作用

Python源代码编码不起作用,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 -*-

在我的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 -*-
在我文件的开头。但是不管我使用哪种编码,下面的代码片段总是将我的字符串声明为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。