Возможно, вы должны поставить # -*- coding: utf-8 -*-
и использовать редакторы и все остальное в режиме utf-8, чтобы избежать этих проблем, но если вы хотите узнать, какая кодировка подходит для вашего текущего ввода, вы можете попробовать этот скрипт (замените 'some string'
на что-то более локализованное):
encodings = ['ascii', 'cp037', 'cp424', 'cp437', 'cp500', 'cp720', 'cp737', 'cp775', 'cp850', 'cp852', 'cp855', 'cp856', 'cp857', 'cp858', 'cp860', 'cp861', 'cp862', 'cp863', 'cp864', 'cp865', 'cp866', 'cp869', 'cp874', 'cp875', 'cp932', 'cp949', 'cp950', 'cp1006', 'cp1026', 'cp1140', 'cp1250', 'cp1251', 'cp1252', 'cp1253', 'cp1254', 'cp1255', 'cp1256', 'cp1257', 'cp1258', 'latin_1', 'iso8859_2', 'iso8859_3', 'iso8859_4', 'iso8859_5', 'iso8859_6', 'iso8859_7', 'iso8859_8', 'iso8859_9', 'iso8859_10', 'iso8859_13', 'iso8859_14', 'iso8859_15', 'iso8859_16', 'johab', 'koi8_r', 'koi8_u', 'mac_cyrillic', 'mac_greek', 'mac_iceland', 'mac_latin2', 'mac_roman', 'mac_turkish', 'ptcp154', 'utf_32', 'utf_32_be', 'utf_32_le', 'utf_16', 'utf_16_be', 'utf_16_le', 'utf_7', 'utf_8', 'utf_8_sig']
def test(s):
for enc in encodings:
try:
u = unicode(s, enc)
print u, enc
except: pass
test('some string')
Это, как говорится, utf-8 - ваш друг; используй это. :)
m от чего-то вроде M = file.readlines() ... для m in M: ... как я могу здесь утверждать: m = u'Šiven '? – Kristian
Вам не нужны «readlines», вы можете просто перебирать файл (и это сократит вдвое ваши потребности в памяти). Вы должны действительно проконсультироваться [other] (http://stackoverflow.com/questions/491921/unicode-utf8-reading-and-writing-to-files-in-python) [вопросы] (http://stackoverflow.com/ вопросы/147741/character-reading-from-file-in-python), или, если эти вопросы (и те, которые вы искали), и их лучшие ответы не решают вашу проблему, задайте новый вопрос самостоятельно. Короче говоря, используйте ['codecs.open'] (http://docs.python.org/library/codecs.html#codecs.open). – phihag