Python特殊字符unicode

时间:2011-11-16 12:30:36

标签: python variables unicode

我有一个python脚本,其中我指定了一个参数:

parser = optparse.OptionParser()
parser.add_option("-D", "--departure", dest="departure",default="", type="string",help="specify departure")

在我的脚本中,我必须输入一些字符串。

当我输入:-D“Düsseldorf”

脚本无法正确识别字符串

有人告诉我要你做“杜塞尔多夫”,但我需要在变量中存储“杜塞尔多夫”

类似变量= u +“Düsseldorf”....嗯我真的不知道该怎么做。

感谢您的帮助。

问候。

2 个答案:

答案 0 :(得分:0)

PEP-0264向您解释如何在python脚本中使用Unicode。

或者,对于懒惰的,请使用以下命令启动脚本:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

print u"Düsseldorf" 

不要忘记将其解决为没有BOM的UTF-8。

答案 1 :(得分:0)

您不仅需要为Python源指定可代表ü字符的字符编码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

但是你还需要记住,命令行参数(至少在Unix中,我不能代表Windows)是字节。因此,您应该将选项指定为字节字符串而不是字符(Unicode)字符串。

例如:

parser.add_option("-D", "--departure", dest="departure",
default=u"Düsseldorf".encode('UTF-8'),
type="string",help="specify departure")

现在,默认参数是一个字节字符串,就像您传递给add_option方法的所有其他参数一样。

此外,您必须确保如果有人将此字符串输入其终端,则必须使用UTF-8的终端字符编码。如果它们使用不同的终端字符编码,则命令行中将显示不同的字节字符串。这就是Unix的工作原理,Python没有能力改变它。