Найти - Пользователи
Полная версия: Русификация скрипта на python для Linux
Начало » Python для новичков » Русификация скрипта на python для Linux
1 2
FDeadalf
Уважаемые программисты не могли бы вы подсказать каким образом можно русифицировать скрипт написанный на python. Notepad++ не помогает и native2ascii тоже. При запуске скрипта кодировка если в Ansi пишется вместо русских букв “эээээээээээээээээээээээээээээээээ”
в Utf-8 вообще скрипт не импортится, а в Utf-8 без BOM все отображается не понятными знаками(проценты,равно), буквами(английскими), но текста как такового не видно.
guranvir
У вас какая локаль?
FDeadalf
Как определить какая локаль?
fata1ex
iconv
tmp_a6367100
FDeadalf
Как определить какая локаль?
locale
tmp_a6367100
guranvir
У вас какая локаль?
только это тут непричём…

..так как кодировка _скрипта_ НЕ ЗАВИСИТ от текущщей _локали_

например скрипт можно написать в кодировке KOI8-R , но выполнить в терминале cp866 .. при этом русские буквы будут показывать как надо ..

главное не забывать:

1. указывать кодировку внутри скрипта: например # -*- coding: koi8-r -*-

2. везде где можно – использовать unicode`ные строки а не байтовые строки
(конструкция from __future__ import unicode_literals упростит написание программы.. но эта конструкция вовсе не обязательна для достижения эффекта unicode`изации )

# p.s.: главное не путать понятия “Unicode” и “Utf-8” – так как это совершенно разные вещщи (“Utf-8” – это БАЙТОВАЯ строка (ровно точно такде как и “cp1251” и “koi8-r”) .. а Unicode`ная строка – не является байтовой)
fata1ex
Лучше перекодировать скрипт в utf-8, чем писать # coding: koi8-r
tmp_a6367100
высылаю скриншот демонстрирующий что локаль и исходники – могут иметь совершенно не связанные друг с другом кодировки

http://ompldr.org/vNXQ2bQ/Screenshot.png

поверьте что на венде (где локаль не UTF-8) – результат точно такой же положительный (всё работает)

# p.s.:
однако при сохранении результатов программы в текстовый файл – всегда оперируйте с БАЙТОВЫМИ строками (НЕ используйте Юникодные строки напрямую) ..
используйте например метод xxxxx.encode(locale.getdefaultlocale(), ‘replace’) – перед тем как сделать запись в файл
tmp_a6367100
fata1ex
Лучше перекодировать скрипт в utf-8, чем писать # coding: koi8-r
это совершенно не связанные понятия!

(ясное дело что только идиот будет делать скрипты в кодировке отличной от UTF-8 .. но _понимать_ – НАДО то как всё это работает..
koi8-r – я взял для примера того чтобы показать что кодировка может быть любая)


при этом – КАКАЯ БЫ кодировка не была – сёравно нужно указывать # -*- coding: XXXX -*-
tmp_a6367100
при этот КАКАЯ БЫ кодировка не была – сёравно нужно указывать # -*- coding: XXXX -*-
в python-3 уже можно не использовать # -*- coding: XXXX -*- , в случае если подразумевается utf-8

в python-2 можно не писать # -*- coding: XXXX -*- , только в случае если подразумевается полное отстуствие не-ascii символов (включая даже комментарии кода, а не только симольные константы)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB