Форум сайта python.su
Добрый день! Я как новичок столкнулся со следующей проблемой. При написании маленькой программки в Notepad++ создаю файл .py с кодировкой UTF-8. При выполнении программы через “щелчок” по файлу *.py в проводнике, программа выполняется, но в командной строке Windows одни иероглифы вместо кириллицы. В чем может быть проблема?
Прикреплённый файлы:
cmd.JPG (26,0 KБ)
Офлайн
консоль windows имеет кодировку cp866, отсюда и ироглифы
print '\n utf8: русский текст' print '\n cp866: русский текст'.decode('utf8').encode('cp866')
Офлайн
sp3
консоль windows имеет кодировку cp866, отсюда и ироглифыprint '\n utf8: русский текст' print '\n cp866: русский текст'.decode('utf8').encode('cp866')
Офлайн
ну раз файл сам в utf-8
и вначале прописано
# -*- coding: utf-8 -*-
то могу лишь предположить что вы используйте строки без префикса u''
т.е. не u'русский текст', а просто ‘русский текст’
Как бы там ни было, почему люди должны гадать, выложите скрипт, укажите версию питона, какую ошибку выдает, прям тресбэк сюда.
Офлайн
В коде не использую “u”. Если в консоли Windows оставить дефолт - cp866, то прога работает, но с иероглифами. Если ввести в консоли chcp 65001, то текст отображается, но потом ошибка.
Python 2.7.3 (default, Apr 10 2012, 23:31:26) on win32
#-*-coding: utf-8-*- import math #Периметр тр-ка t=(a,b,c)=input('Введите стороны треугольника через запятую: ') p = t[0]+t[1]+t[2] print 'Периметр треугольника равен: ', p #Площадь тр-ка polu=float(sum(t))/2 s = math.sqrt(polu*(polu-t[0])*(polu-t[1])*(polu-t[2])) print 'Площадь треугольника по формуле Герона: ', s raw_input('Enter для выхода')
Отредактировано airhector (Июль 3, 2012 14:04:31)
Прикреплённый файлы:
cmd2.JPG (47,6 KБ)
Офлайн
airhectorА попробовать использовать не судьба? :)
В коде не использую “u”
Офлайн
В ком.строке нормально отображает
#-*-coding: utf-8-*-
import math
#Периметр тр-ка
t=(a,b,c)=input('\n cp866: Введите стороны треугольника через запятую: '.decode('utf8').encode('cp866'))
p = t[0]+t[1]+t[2]
print '\n cp866: Периметр треугольника равен: '.decode('utf8').encode('cp866'), p
#Площадь тр-ка
polu=float(sum(t))/2
s = math.sqrt(polu*(polu-t[0])*(polu-t[1])*(polu-t[2]))
print '\n cp866: Площадь треугольника по формуле Герона: '.decode('utf8').encode('cp866'), s
raw_input('\n cp866: Enter для выхода '.decode('utf8').encode('cp866'))
Отредактировано sanodin (Июль 3, 2012 17:47:46)
Офлайн
Всем спасибо! Работает!
Офлайн