Известно, что функции 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
Любыми манипуляциями и жонглированием с этими параметрами не могу включить нужную кодировку.
Есть ли здесь спецы по этому змею Питону?
<div class='quotetop'>Цитата</div>Один из способов решить эту проблему - установить оболочку Python - но она весит около 10 Мб, у меня после установки цива начала читать .рус-файлы из неёПроблема в том, что
а) site.py откомпилирован в бинарник site.pyc
б) неизвестно, где в папках Civ4 должен располагаться sitecustomize.py[/b]
У меня уже установлен Python 2.2, поднять версию до 2.4.1150.1012 (версия dll) пока не могу, нужен для FontLab'а. Если у вас такая версия, не могли бы вы откомпилировать site.pyc c sys.setdefaultencoding('cp1251' # с разными аргументами: в т.ч. iso88859-15
В моей версии site.py имеется такая конструкция:
# Set the string encoding used by the Unicode implementation. The
# default is 'ascii', but if you'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"
Облом.
site.py на Civ4 не влияет никак - его удаления игра не замечает.
Сколько еще змеев скрывается?
Python 2.4
Boost.Python
wxPython 2.6.0