PDA

Просмотр полной версии : Python и параметр sys.setdefaultencoding



Kypchak
10.02.2006, 12:45
Известно, что функции Python'а обрабатывают только ASCII символы.
Включив setdefaultencoding теоретически возможно решить глобально проблему с отработкой функции upper(). Это позволит отказаться от самодельных шрифтов (кроме ресурса иконокҚ, устранит проблему Ё Ч Я изменением одного параметра.
В мануалах, например, "Deep Into Python" утверждается, что для установки кодировки по умолчанию надо ее объявить в site.py:
sys.setdefaultencoding ('iso-8859-15') # эта кодировка только для примера

или же в sitecustomize.py:
import sys
sys.setdefaultencoding('iso-8859-15')

там же, род хака:
reload(sys)
sys.setdefaultencoding('iso-8859-15')

Проблема в том, что
а) site.py откомпилирован в бинарник site.pyc
б) неизвестно, где в папках Civ4 должен располагаться sitecustomize.py
Опять же, по манулам это должно быть в Python\lib\site-packages6 Python\lib\site-python или еще где по пути объявленном в переменной окружении PYTHONPATH
Любыми манипуляциями и жонглированием с этими параметрами не могу включить нужную кодировку.
Есть ли здесь спецы по этому змею Питону?

swan
10.02.2006, 18:48
<div class='quotetop'>Цитата</div>
Проблема в том, что
а) site.py откомпилирован в бинарник site.pyc
б) неизвестно, где в папках Civ4 должен располагаться sitecustomize.py[/b]
Один из способов решить эту проблему - установить оболочку Python - но она весит около 10 Мб, у меня после установки цива начала читать .рус-файлы из неё

Kypchak
11.02.2006, 01:54
У меня уже установлен Python 2.2, поднять версию до 2.4.1150.1012 (версия dll) пока не могу, нужен для FontLab&#39;а. Если у вас такая версия, не могли бы вы откомпилировать site.pyc c sys.setdefaultencoding(&#39;cp1251&#39;) # с разными аргументами: в т.ч. iso88859-15

В моей версии site.py имеется такая конструкция:
# Set the string encoding used by the Unicode implementation. The
# default is &#39;ascii&#39;, but if you&#39;re willing to experiment, you can
# change this.

encoding = "ascii" # Default value set by _PyUnicode_Init()

if 0:
# Enable to support locale aware default string encodings.
import locale
loc = locale.getdefaultlocale()
if loc[1]:
encoding = loc[1]

if 0:
# Enable to switch off string to Unicode coercion and implicit
# Unicode to string conversion.
encoding = "undefined"

if encoding != "ascii":
# On Non-Unicode builds this will raise an AttributeError...
sys.setdefaultencoding(encoding) # Needs Python Unicode build !

здесь надо заменить encoding = "ascii" на encoding = "cp1251" или encoding = "iso88859-15"

swan
11.02.2006, 11:30
не разу не пробовал компилировать попробую - надеюсь чего нить получится

Kypchak
12.02.2006, 00:53
Облом.
site.py на Civ4 не влияет никак :( - его удаления игра не замечает.
Сколько еще змеев скрывается?
Python 2.4
Boost.Python
wxPython 2.6.0