Какая кодировка мне нужна для отображения знака GBP (фунт) с использованием Python на Cygwin в Windows XP? - PullRequest
8 голосов
/ 01 апреля 2009

У меня есть скрипт python (2.5.4), который я запускаю в cygwin (в окне DOS в Windows XP). Я хочу включить знак фунта (£) в вывод. Если я это сделаю, я получу эту ошибку:

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. Поэтому я посмотрел на этот PEP и попытался добавить это в начало моего сценария:

# coding=cp437

Это остановило ошибку, но вывод показывает ú, где он должен показывать £.

Я тоже пробовал ISO-8859-1 с тем же результатом.

Кто-нибудь знает, какая кодировка мне нужна?

Или где я мог бы посмотреть, чтобы узнать?

Ответы [ 3 ]

10 голосов
/ 02 апреля 2009

Unicode для знака фунта - 163 (десятичный) или A3 в шестнадцатеричном, поэтому следующее должно работать независимо от кодировки вашего скрипта, если выходная кодировка работает правильно.

print u"\xA3"
3 голосов
/ 06 января 2010

попробуйте кодировку:

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

и затем отобразить знак «£»:

print unichr(163)
2 голосов
/ 01 апреля 2009

Здесь задействованы две кодировки:

  • Кодировка вашего исходного кода, которая должна быть правильной, чтобы ваш входной файл означал то, что, по вашему мнению, означает
  • Кодировка вывода, которая должна быть правильной, чтобы символы, отображаемые на экране, отображались как положено.

Кажется, ваша выходная кодировка выключена. Если это выполняется в окне терминала в Cygwin, вам нужно сопоставить кодировку этого терминала.

EDIT : Я только что запустил следующую программу на Python в (родном) окне терминала Windows XP, подумал, что это немного интересно:

>>> ord("£")
156

156, конечно, не является точкой кода для знака фунта в кодировке Latin1, которую вы пробовали. Похоже, что в кодовой странице Windows 1252 тоже не , что, как я ожидаю, будет использовать мой терминал ... Странно.

...