yarkov
@yarkov
Помог ответ? Отметь решением.

Как победить кодировки в Python?

Добрый день. Имеем скрипт в кодировке utf-8. Он динамически подгружает плагины. Имеем в классе свойство __charset = 'utf-8' по умолчанию. При инициализации класса, если аргумент encoding не None, то меняем self.__charset = 'utf-8' на self.__charset = encoding. Вот как-то так:
def __init__(self, path = None, encoding = None):
		if not encoding is None:
			self.__charset = encoding
			reload(sys)
			sys.setdefaultencoding(self.__charset)
			sys.stdout = codecs.getwriter(self.__charset)(sys.stdout)
			print self.__charset

Так вот если запускать скрипт щелчком, то кодировка у нас utf-8 и кириллица выводится нормально. Но если запустить из командной строки, то кодировка cp866 (передаем ее в конструктор) и кириллица выводится кракозябрами. Я хз что можно сделать еще.
if len(sys.argv) > 1:
	print "The program is run from the console."
	print "Most likely there will be problems with the encoding of messages output, since the script was written in utf-8 encoding."
	continued = raw_input("Do you want to continue? Y/N ")
	if continued and continued.upper() == 'Y':
		grunt = PyGrunt(sys.argv[1], encoding = 'cp866')
  • Вопрос задан
  • 778 просмотров
Решения вопроса 1
sim3x
@sim3x
Используй python3
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@gimntut
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
26 апр. 2024, в 07:47
2000 руб./за проект
26 апр. 2024, в 06:46
1000 руб./в час
26 апр. 2024, в 05:31
1000 руб./за проект