Python, проблема кодирования исходного кода - PullRequest
0 голосов
/ 23 января 2010

Я использую редактор Notepad ++ на окнах с форматом, установленным в ASCII, Я прочитал «PEP 263: Кодировки исходного кода» и соответствующим образом исправил свой код (я думаю), но есть символы, все еще печатающие в шестнадцатеричном формате ...

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os, sys

a_munge = [ "A", "4", "/\\", "\@", "/-\\", "^", "aye", "?" ]
b_munge = [ "B", "8", "13", "I3", "|3" , "P>", "|:", "!3", "(3", "/3", "3","]3" ]
c_munge = [ "C", "<", "(", "{", "(c)" ]
d_munge = [ "D", "|)", "|o", "?", "])", "[)", "I>", "|>", " ?", "T)", "0", "cl" ]
e_munge = [ "E", "3", "&", "€", "£", "[-", "|=-", "?" ]
         .
         .
         .

Ответы [ 3 ]

2 голосов
/ 23 января 2010

Линия:

# -*- coding: UTF-8 -*-

заявляет, что исходный файл сохранен в UTF-8. Все остальное - ошибка.

Когда вы объявляете байтовые строки в исходном коде:

e_munge = [ "E", "3", "&", "€", "£", "[-", "|=-", "?" ]

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

Когда вместо этого вы используете строки Unicode:

    e_munge = [ u"E", u"3", u"&", u"€", u"£", u"[-", u"|=-", u"?" ]

затем, когда u с последующей байтовой строкой "€" читается Python из исходного файла, он использует объявленную кодировку для декодирования этого символа в Unicode. *

Иллюстрация:

# coding: utf-8
bs = '€'
us = u'€'
print repr(bs)
print repr(us)

ВЫВОД:

'\xe2\x82\xac'
u'\u20ac'
2 голосов
/ 23 января 2010

Возможно, вам следует использовать литералы Юникода (например, u'€').

1 голос
/ 24 января 2010

print some_list действует print repr(some_list) - поэтому вы видите \u20ac вместо знака евро. В целях отладки «шестнадцатеричный код Unicode» - это именно то, что вам нужно для однозначного отображения ваших данных.

Похоже, в вашем списке совершенно нормально работают объекты Unicode; Я предлагаю вам не «печатать» список на Tkinter.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...