【问题标题】:What encoding do I need to display a GBP sign (pound sign) using python on cygwin in Windows XP?在 Windows XP 的 cygwin 上使用 python 显示 GBP 符号(井号)需要什么编码?
【发布时间】:2009-04-01 13:18:23
【问题描述】:

我有一个在 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,结果相同。

有人知道我需要哪种编码吗?

或者我可以在哪里找到?

【问题讨论】:

    标签: python encoding python-2.5


    【解决方案1】:

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

    print u"\xA3"
    

    【讨论】:

      【解决方案2】:

      尝试编码:

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

      然后显示“£”符号:

      print unichr(163)
      

      【讨论】:

        【解决方案3】:

        这里涉及到两种编码:

        • 源代码的编码,必须正确才能使您的输入文件具有您认为的含义
        • 输出的编码,必须正确才能使发出的符号按预期显示。

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

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

        >>> ord("£")
        156
        

        156 肯定不是您尝试的 Latin1 编码中井号的代码点。在 Window 的代码页 1252 中也没有 seem to be,我希望我的终端能够使用它……很奇怪。

        【讨论】:

        • 啊!谢谢你。所以现在我必须弄清楚在 Windows dos-box 中使用什么编码......
        • 您的修改解决了我的问题!我通过打印 \x9c 得到一个 £ 符号,而没有指定任何编码。很奇怪,但对我来说很好! :-)
        • 你的终端好像是模拟DOS的,所以是CP437或者CP850。
        猜你喜欢
        • 2011-05-12
        • 1970-01-01
        • 1970-01-01
        • 2015-12-13
        • 2011-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多