What encoding do I need to display a GBP sign (pound sign) using python on cygwin in Windows XP?

不打扰是莪最后的温柔 提交于 2019-12-01 15:15:38

问题


I have a python (2.5.4) script which I run in cygwin (in a DOS box on Windows XP). I want to include a pound sign (£) in the output. If I do so, I get this error:

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

OK. So I looked at that PEP, and now tried adding this to the beginning of my script:

# coding=cp437

That stopped the error, but the output shows ú where it should show £.

I've tried ISO-8859-1 as well, with the same result.

Does anyone know which encoding I need?

Or where I could look to find out?


回答1:


There are two encodings involved here:

  • The encoding of your source code, which must be correct in order for your input file to mean what you think it means
  • The encoding of the output, which must be correct in order for the symbols emitted to display as expected.

It seems your output encoding is off now. If this is running in a terminal window in Cygwin, it is that terminal's encoding that you need to match.

EDIT: I just ran the following Python program in a (native) Windows XP terminal window, thought it was slightly interesting:

>>> ord("£")
156

156 is certainly not the codepoint for the pound sign in the Latin1 encoding you tried. It doesn't seem to be in Window's Codepage 1252 either, which I would expect my terminal to use ... Weird.




回答2:


The Unicode for a pound sign is 163 (decimal) or A3 in hex, so the following should work regardless of the encoding of your script, as long as the output encoding is working correctly.

print u"\xA3"



回答3:


try the encoding :

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

and then to display the '£' sign:

print unichr(163)


来源:https://stackoverflow.com/questions/705434/what-encoding-do-i-need-to-display-a-gbp-sign-pound-sign-using-python-on-cygwi

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!