HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > PHP
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 15.07.2009, 12:24
login999
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
Провел на форуме:
4512757

Репутация: 973


По умолчанию

Цитата:
Сообщение от Fata1ex  
Если оставлять его необязательным, то увеличивается гибкость программы, так как во время открытия файла возможно использование любой кодировки. По-моему так
Кодировки есть грабли, через которые проходят очень многоие (я в свое время очень конкретно намучился с этим, да и не один я), просто за счет того чтобы сделать его обязательным (имется ввиду убрать значение по умолчанию), то гибкость не страдает, так как можно выбрать любую, зато отпадает куча вопросов и проблем на тему "А почему у меня крякозябры показывает", айс в py3k то что для внутреннего представления выбран юникод, в 2.6 я делал всем загрузкам из файлов вручную перекодирование в юникод, получалась конкретная путаница

Чтоб не быть голословным:
Код:
......
    def load(self, data, data_encoding=None):
        if data_encoding is None:
            data_encoding = self.defaultencoding
        self.Lock.acquire()
        for line in data:
            self.Container.append(line.translate(None, "\r\n").decode(data_encoding, "replace"))
        if self.StringVar is not None:
            try:
                self.StringVar.set(len(self.Container))
            except RuntimeError:
                pass
        self.Lock.release()
......
    def dump(self, outfile, data_encoding=None, remove=False):
        if data_encoding is None:
            data_encoding = self.defaultencoding
        self.Lock.acquire()
        with open(outfile, "a") as out:
            for item in self.Container:
                out.write("{0}\n".format(item.encode(data_encoding, "replace")))
        if remove:
            self.Container = []
        if self.StringVar is not None:
            try:
                self.StringVar.set(len(self.Container))
            except RuntimeError:
                pass
        self.Lock.release()
......

Последний раз редактировалось login999; 15.07.2009 в 12:27..
 
Ответить с цитированием
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.