Python特殊字符Unicode

1 投票
2 回答
1409 浏览
提问于 2025-04-17 06:26

我有一个Python脚本,在里面我需要指定一个参数:

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

然后在我的脚本中,我需要对输入的字符串做一些处理。

当我输入:-D "Düsseldorf"

这个字符串在脚本中没有被正确识别。

有人告诉我可以用u"Düsseldorf",但我需要把"Düsseldorf"存储在一个变量里。

像这样:变量 = u + "Düsseldorf"……嗯,我真的不知道该怎么做。

谢谢你的帮助。

祝好。

2 个回答

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无法改变这一点。

0

PEP-0264 这篇文档告诉你如何在 Python 脚本中使用 Unicode。

如果你比较懒,可以在你的脚本开头加上:

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

print u"Düsseldorf" 

别忘了把它保存为 UTF-8 格式,并且不要带 BOM。

撰写回答