代码之家  ›  专栏  ›  技术社区  ›  Ben

在WindowsXP中,使用python在cygwin上显示Gbps符号(磅符号)需要什么编码?

  •  7
  • Ben  · 技术社区  · 17 年前

    我有一个python(2.5.4)脚本,运行在cygwin中(在WindowsXP的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
    

    好啊。所以我看了看那个政治公众人物,现在试着在我的剧本开头加上这个:

    # coding=cp437
    

    这样就停止了错误,但输出显示出应显示的位置。

    我也试过ISO-8859-1,结果是一样的。

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

    或者我在哪里可以找到答案?

    3 回复  |  直到 8 年前
        1
  •  2
  •   unwind    17 年前

    这里涉及两种编码:

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

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

    编辑 :我刚刚在(本机)WindowsXP终端窗口中运行了以下python程序,认为这有点有趣:

    >>> ord("£")
    156
    

    156当然不是您尝试的拉丁1编码中磅符号的代码点。它不 seem to be 在window的代码页1252中,我希望我的终端使用…奇怪的。

        2
  •  9
  •   rjmunro    17 年前

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

    print u"\xA3"
    
        3
  •  3
  •   djibril    16 年前

    尝试编码:

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

    然后显示“_”标志:

    print unichr(163)