Python和UTF-8:有点令人困惑

Sus*_*yer 2 python google-app-engine utf-8

我在使用Python 2.5的谷歌应用引擎.我的应用程序必须处理多语言,所以我必须处理utf-8.

我做了很多谷歌,但没有得到我想要的.

1. # -*- coding: utf-8 -*-什么用途?

2.有什么区别

s=u'Witaj ?wiecie'
s='Witaj ?wiecie'
Run Code Online (Sandbox Code Playgroud)

'Witajświecie'是一首utf-8字符串.

3.当我将.py文件保存为'utf-8'时,我是否还需要u前面的每个字符串?

lvc*_*lvc 6

u'blah'把它变成另一种字符串(类型unicode而不是类型str) - 它使它成为一系列unicode代码点.没有它,它是一个字节序列.只有字节可以写入磁盘或网络流,但是你通常希望使用Unicode(尽管Python和一些库会为你做一些转换) - 编码(utf-8)之间的转换是这些.所以,是的,你应该使用u所有文字的前面,它会让你的生活更轻松.有关更好的解释,请参阅Programatic Unicode.

编码行告诉Python你的文件编码是什么,这样Python就可以理解它.同样,从磁盘读取会产生字节 - 但Python希望看到字符.在Py2中,代码的默认编码是ASCII,因此编码行允许您?直接在.py文件中放置内容 - 除此之外,它不会改变代码的工作方式.