9

我有一个在 cygwin 中运行的 python (2.5.4) 脚本(在 Windows XP 的 DOS 框中)。我想在输出中包含一个井号 (£)。如果这样做,我会收到此错误:

SyntaxError: Non-ASCII character '\xa3' in file dbscan.py on line 253, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

好的。所以我查看了那个 PEP,现在尝试将它添加到我的脚本的开头:

# coding=cp437

这停止了​​错误,但输出显示 ú 它应该显示 £。

我也尝试过 ISO-8859-1,结果相同。

有谁知道我需要哪种编码?

或者我在哪里可以找到?

4

3 回答 3

11

磅符号的 Unicode 是 163(十进制)或十六进制的 A3,因此无论脚本的编码如何,只要输出编码正常工作,以下内容都应该有效。

print u"\xA3"
于 2009-04-01T23:22:19.447 回答
4

尝试编码:

# -*- coding: utf-8 -*-

然后显示“£”符号:

print unichr(163)
于 2010-01-06T18:44:03.713 回答
2

这里涉及两种编码:

  • 源代码的编码,必须正确才能使您的输入文件表达您认为的意思
  • 输出的编码,必须正确才能使发出的符号按预期显示。

看来您的输出编码现在已关闭。如果这是在 Cygwin 的终端窗口中运行的,那么您需要匹配的是该终端的编码。

编辑:我刚刚在(本机)Windows XP 终端窗口中运行了以下 Python 程序,认​​为它有点有趣:

>>> ord("£")
156

156 肯定不是您尝试的 Latin1 编码中井号的代码点。它似乎也不在 Window 的代码页 1252 中,我希望我的终端可以使用它……很奇怪。

于 2009-04-01T13:20:36.867 回答