Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 12, 2010 18:38:08

FDeadalf
От:
Зарегистрирован: 2010-10-12
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Русификация скрипта на python для Linux

Уважаемые программисты не могли бы вы подсказать каким образом можно русифицировать скрипт написанный на python. Notepad++ не помогает и native2ascii тоже. При запуске скрипта кодировка если в Ansi пишется вместо русских букв “эээээээээээээээээээээээээээээээээ”
в Utf-8 вообще скрипт не импортится, а в Utf-8 без BOM все отображается не понятными знаками(проценты,равно), буквами(английскими), но текста как такового не видно.



Офлайн

#2 Окт. 12, 2010 20:48:47

guranvir
От:
Зарегистрирован: 2010-03-16
Сообщения: 186
Репутация: +  0  -
Профиль   Отправить e-mail  

Русификация скрипта на python для Linux

У вас какая локаль?



Офлайн

#3 Окт. 13, 2010 22:35:02

FDeadalf
От:
Зарегистрирован: 2010-10-12
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Русификация скрипта на python для Linux

Как определить какая локаль?



Офлайн

#4 Окт. 13, 2010 23:49:40

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Русификация скрипта на python для Linux

iconv



Офлайн

#5 Окт. 14, 2010 09:35:34

tmp_a6367100
От:
Зарегистрирован: 2010-08-23
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Русификация скрипта на python для Linux

FDeadalf
Как определить какая локаль?
locale



Офлайн

#6 Окт. 14, 2010 09:41:14

tmp_a6367100
От:
Зарегистрирован: 2010-08-23
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Русификация скрипта на python для Linux

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`ная строка – не является байтовой)



Офлайн

#7 Окт. 14, 2010 09:46:59

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Русификация скрипта на python для Linux

Лучше перекодировать скрипт в utf-8, чем писать # coding: koi8-r



Офлайн

#8 Окт. 14, 2010 09:52:57

tmp_a6367100
От:
Зарегистрирован: 2010-08-23
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Русификация скрипта на python для Linux

высылаю скриншот демонстрирующий что локаль и исходники – могут иметь совершенно не связанные друг с другом кодировки

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

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

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



Офлайн

#9 Окт. 14, 2010 09:56:24

tmp_a6367100
От:
Зарегистрирован: 2010-08-23
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Русификация скрипта на python для Linux

fata1ex
Лучше перекодировать скрипт в utf-8, чем писать # coding: koi8-r
это совершенно не связанные понятия!

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


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



Отредактировано (Окт. 14, 2010 10:00:33)

Офлайн

#10 Окт. 14, 2010 09:58:18

tmp_a6367100
От:
Зарегистрирован: 2010-08-23
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Русификация скрипта на python для Linux

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

в python-2 можно не писать # -*- coding: XXXX -*- , только в случае если подразумевается полное отстуствие не-ascii символов (включая даже комментарии кода, а не только симольные константы)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version