Здравствуйте, гость ( Вход | Регистрация )
igor_bogomolov | Дата 19.5.2011, 23:17 |
а если я не хочу вывода в консоль, а просто копирую файлы? всё равно нужно использовать decode()? В твоём случае - да. |
|
Litkevich Yuriy | Дата 19.5.2011, 16:43 |
Что то ты запутался в кодировках и меня запутал. я изначально написал исходник в кодировке utf-8 и соответсвующим образом пометил во второй строке файла.Если ты хочешь увидеть реальное сообщение делай так а если я не хочу вывода в консоль, а просто копирую файлы? всё равно нужно использовать decode()?
Поэкспериментируй немного с функцией decode и кодировками файла и все встанет на свои места. |
|
igor_bogomolov | Дата 19.5.2011, 14:27 |
пример не понял. В какой кодировке исходник? В cp1251. В сообщении дважды это указано, на словах и в кодеЦитата('Litkevich Yuriy' date='19.5.2011 @ 8:07' post=49834) потому-что он изначально был в UTF-8 Что то ты запутался в кодировках и меня запутал. В общем так. Если ты используешь кириллицу в файле *.py, ты должен явно указывать кодировку этого файла. Делается это так: # -*- coding: cp1251 -*-. Далее, если у тебя кодировка консоли (это пример) отличается от кодировки исходников, при выводе сообщения с кириллицей на экран ты увидишь просто набор не читаемых символов. Если ты хочешь увидеть реальное сообщение делай так
Поэкспериментируй немного с функцией decode и кодировками файла и все встанет на свои места. |
|
Litkevich Yuriy | Дата 19.5.2011, 7:07 |
Так если у тебя файл в кодировке cp1251, почему интерпретатору ты говоришь иначе? потому-что он изначально был в UTF-8file_name = 'file один.txt'.decode('cp1251') пример не понял. В какой кодировке исходник? |
|
igor_bogomolov | Дата 17.5.2011, 12:10 |
* экранированные кавычки - ненужны. Ну это мы уже выяснили. Так ты же кавычки в имя файла запихал Было бы странно, если бы они были нужны. Мы же не в консоли команду вводим. Ты же не делаешь в Qt так: Такой код тоже файла не найдет, даже если он существует. Все по тем же причинам (кавычки в имени файла).* если кодировка исходника CP1251, то всё корректно работает с кириллицей, не взирая на то, что в начале файла есть запись о кодировке UTF-8. Так если у тебя файл в кодировке cp1251, почему интерпретатору ты говоришь иначе? Пиши такНо надо бы делать по правильному - заявленная кодировка должна соответствовать реальной.
Ну и что бы завершить тему. Представим ситуацию. Файл у нас в кодировке cp1251. Система/консоль в UTF8. Этот код не найдет существующий файл. К тому же на консоль выведет кракозябры. Что бы всё работало так как задумано , нужно писать так
Но это надуманный пример. В реальной ситуации такого быть не должно. |
|
Litkevich Yuriy | Дата 17.5.2011, 5:41 |
вот к чему привёл метод научного тыка: * экранированные кавычки - ненужны. * если кодировка исходника CP1251, то всё корректно работает с кириллицей, не взирая на то, что в начале файла есть запись о кодировке UTF-8. Но надо бы делать по правильному - заявленная кодировка должна соответствовать реальной. в случае с Qt, можно было бы воспользоваться QObject::trUtf8(). Однако питону явно указано в какой кодировке файл. Тут я что-то совсем не пойму. П.С. Питон 2.6 |
|
Litkevich Yuriy | Дата 16.5.2011, 19:52 |
Так ты же кавычки в имя файла запихал дык, я полагал, что они неотемлемы при пробелах.Прийду завтра на работу проверю твой вариант |
|
igor_bogomolov | Дата 16.5.2011, 19:48 |
Так ты же кавычки в имя файла запихал
|
|
Litkevich Yuriy | Дата 16.5.2011, 10:30 |
Задача, скопировать несколько файлов в некий каталог. Подводные камни: * имя исходного файла относительно текущего каталога * имя исходного файла содержит кириллицу * имя исходного файла содержит пробелы структура ФС: -doc -folder_1/file раз.txt -folder_1/file два.txt -folder два/file раз.txt -folder два/file 2.txt нужно все файлы скопировать в каталог doc Код для теста наваял такой:
К консоли винды получаю такое:
В IDLE:
А вот если не изменяя самого исходника, поменять кодировку файла на ANSI (т.е. и запись о кодировке UTF-8 оставить неизменной) то вывод в IDLE будет:
Т.е. выводится корректный текст, но файлы всё-равно не видит. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 28.3.2024, 18:33 |