Форум сайта python.su
Да хотя бы тем что можно писать на родном (как на дефолтном) строки для меток в гуи, например, или в Джанго.
Комментарии тоже (хотя я лично приверженец писать комментарии на английском)
Офлайн
Спасибо всем кто ответил.
bw
> Под виндой я запускаю файл питона через командную строку и utf-8 нормально выводится.
>> Русские? Ты что-то путаешь ;-).
Действительно наврал. Я выводил unicode строки -)
Тоесть если я правильно понял, то, чтобы мне манипулировать со строкой, делать срезы, приводить к разному регистру, поиск в строке. Всегда надо переводить строку в юникод?.. или это касается только, если используется utf-8?
Офлайн
FerromanЧто значит “строки для меток в гуи”? Префикс “u” для строк можно использовать при любой кодировке исходника.
Да хотя бы тем что можно писать на родном (как на дефолтном) строки для меток в гуи, например, или в Джанго.
Комментарии тоже (хотя я лично приверженец писать комментарии на английском)
Офлайн
Префикс “u” для строк можно использовать при любой кодировке исходника.Это не так. Попробуйте сами.
Если исходник не в utf-8, комментарии вполне можно писать не на английском.
Офлайн
Можно ещё задать последний дурацкий вопрос?
Вот допустим я хочу получить список папок и файлов
———–
import os
lst = os.listdir(path)
———–
в какой кодировке будут значения элементов списка?
Тоесть в питоне все встроенные функции и стандартные модули возвращают результат в какой кодировке?
Я догадываюсь, что вопрос нелепый. Но не могу, если что-то не понимаю -)
Офлайн
The gray CardinalМожно конечно все не latin1 строки вынести в отдельный файл, но не всегда это возможно или удобно.
Чем конкретно выигрывают?
kvazarв юникоде…
в какой кодировке будут значения элементов списка?
Отредактировано (Янв. 5, 2009 17:23:14)
Офлайн
FerromanНичего не понял. Следующий код не должен работать? Почему работает, что я не правильно делаю?Префикс “u” для строк можно использовать при любой кодировке исходника.Это не так. Попробуйте сами.
Если исходник не в utf-8, комментарии вполне можно писать не на английском.
# -*- coding: cp1251 -*-
import codecs, sys
outf = codecs.getwriter('cp866')(sys.stdout, errors='replace')
sys.stdout = outf
print u'Привет, мир!' # Киса, ку-ку!
Офлайн
kvazarДа, ты правильно понял :) Не только с utf-8 это нужно делать, но и с cp1251 и пр. Есть тип unicode, и есть str. Если это latin1 то необязательно в юникод преобразовывать.
Тоесть если я правильно понял, то, чтобы мне манипулировать со строкой, делать срезы, приводить к разному регистру, поиск в строке. Всегда надо переводить строку в юникод?.. или это касается только, если используется utf-8?
Офлайн
Может кто-нибудь аргументированно объяснить, почему исходник нужно всегда писать в UTF-8?
Я не вижу в этой ветке ни одного аргумента, кроме как получить возможность вставки чудных символов в комментариях.
Офлайн
The gray Cardinal
Это я к тому говорил что указывать тип кодировки исходника в начале файла нужно в любом случае. Насколько я заметил для этого принято сразу использовать utf-8. Я же твои слова воспринял как возможность использования слов в отличной от ascii кодировке без указания таковой.
Офлайн