Кириллица и Unicode
В нем в начале прописал "# -*- coding: utf8 -*-".
В нем есть код "print 'Русский текст' ".
Но при выполнении выдается ошибка "UnicodeEncodeError: 'ascii' codec can't encode characters in position 0: ordinal not in range(128)"
Если же написать так "print u'Русский текст' ".
То работает.
Можно ли обойтись без этого u"текст", ведь файл и так в юникоде?
объясняли нам как-то, что кодировка файла, и кодировка ввода-вывода это разные вещи и нельзя их путать. т.е. в принте надо напрямую в юникод кодировать.
Встроенная функция unicode() может работать с Latin-1, ASCII, UTF-8, UTF-16, с русскими кодировками ISO-8859-5, KOI8-R, CP1251, CP866 и Mac-cyrillic, и многими другими. Python по умолчанию использует кодировку ASCII , например, при выводе на экран инструкцией print и записи в файл. Если у Вас есть данные в определенной кодировке, для получения строки Unicode используйте встроенную функцию unicode(), указав кодировку в качестве второго аргумента:
Код:
s = unicode("Привет Всем!", "KOI8-R")
Цитата:
UnicodeError: ASCII encoding error: ordinal not in range(128)
Метод encode() позволяет преобразовывать строки Unicode в обычные строки, содержащие текст в указанной кодировке:
Код:
s.encode("KOI8-R")
s.encode("UTF-8")
s.encode("UTF-8")
Всем спасибо за ответы. Из сказанного стало ясно, что в строковых константах без префикса u не обойтись.