TLemur_SLED
Что самое интересное - если в Linux локаль не utf8, а, скажем, koi8r или ещё какая-нибудь - баг тоже проявляется.
Что, такие Linux ещё остались в природе? Все нормальные дистрибутивы давно перешли на UTF-8.
Если в пути/имени файла есть символы из Latin Extended-B, расширенной кириллице Firefox под Windows вообще не открывает файлы...
Это вроде починили в 3.0.
Do not meddle in the affairs of Wizards, for they are subtle and quick to anger.
Отсутствует
по ходу дела проблема тут куда глубже...
const persistContractID = "@mozilla.org/embedding/browser/nsWebBrowserPersist;1"; const persistIID = Components.interfaces.nsIWebBrowserPersist; return Components.classes[persistContractID].createInstance(persistIID);
persist.saveDocument(persistArgs.source, persistArgs.target, filesFolder, persistArgs.contentType, encodingFlags, kWrapColumn);
filesFolder содержит юникодную строку, но где-то внутри сей компоненты она таинственным образом превращается в вин1251...
Отредактировано Dark-Demon (26-01-2008 03:54:03)
!
Отсутствует
ну, в общем, без ковыряния сишного кода работает такой хак:
перед вызовом сохранения обрабатываем имя папки с помощью encodeURI, в результате чего ссылки будут правильными, но у папки будет название через проценты, поэтому после сохранения достаточно просто переименовать папку в filesFolder без урл-экранирования.
!
Отсутствует
ну всё, я спать.
короче в toolkit/content/global/contentAreaUtils.js нужно эту строку:
заменить на эту:
и чуть дальше по коду повесить срабатывание следующей функции:
по окончанию загрузки. что-то у меня не получилось подцепить обработчик...
!
Отсутствует
Dark-Demon
И это всю проблему решает???
«I actually hate programming, but I love solving problems» © Rasmus Lerdorf, PHP's Creator
Отсутствует
stoneflash
Первая часть работает...
Отсутствует
Ну её смысл ясен, а
не работает?
«I actually hate programming, but I love solving problems» © Rasmus Lerdorf, PHP's Creator
Отсутствует
stoneflash, на первый взгляд - да, решает
!
Отсутствует
Dark-Demon
Но как костыль? Или всё верно? Просто если напишешь патч (хотя что тут писать...), то деньги твои должны быть...
«I actually hate programming, but I love solving problems» © Rasmus Lerdorf, PHP's Creator
Отсутствует
угу, костыль ещё тот
Отредактировано Dark-Demon (26-01-2008 13:09:30)
!
Отсутствует
Жаль. А в чем тогда проблема?
filesFolder содержит юникодную строку, но где-то внутри сей компоненты она таинственным образом превращается в вин1251...
У японцев тоже в win1251 ?
«I actually hate programming, but I love solving problems» © Rasmus Lerdorf, PHP's Creator
Отсутствует
filesFolder содержит юникодную строку, но где-то внутри сей компоненты она таинственным образом превращается в вин1251...
собственно, так и должно быть. это системная кодировка в винде.
баг тут не в неправильном сохранении, а в открытии сохранённого файла
Отсутствует
shutnik, какое отношение имеет системная кодировка к кодировке имён фалов? имена в нтфс хранятся в юникоде.
stoneflash, нет, у японцев - другая системная кодировка.
Отредактировано Dark-Demon (26-01-2008 13:25:51)
!
Отсутствует
shutnik
Мне кажется, всё-таки в сохранении.
Потому что если мы сохраняем файл в любой кодировке, а потом заменяем путь к папке на юникод, то всё работает без проблем.
Отсутствует
какое отношение имеет системная кодировка к кодировке имён фалов? имена в нтфс хранятся в юникоде.
самое прямое, имена файлов хранятся в системной кодировке.
то, что они могут быть в разных кодировках мне известно.
Потому что если мы сохраняем файл в любой кодировке, а потом заменяем путь к папке на юникод, то всё работает без проблем.
то есть сохраняется верно, ага. не верно работает открытие, если путь не в юникоде.
Отсутствует
shutnik, имена файлов хранятся в ютф8
!
Отсутствует
Dark-Demon
Может быть уже проверял, но на всякий случай - может быть дело в encodingFlags ? Кроме того, nsIWebBrowserPersist
... is implemented by the following components:
* @mozilla.org/embedding/browser/nsWebBrowser;1
* @mozilla.org/embedding/browser/nsWebBrowserPersist;1
и, возможно, стоит проверить методы реализаторов.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
подходящего по описанию флага я не нашёл, включать все подряд - не пробовал.
насчёт замены nsIWebBrowserPersist на nsIWebBrowser - не думаю, что это решит проблему, скорее что-нибудь сломает...
!
Отсутствует
Dark-Demon
Если уж взялся - перечитай баги, их десяток-два, там уже много что обмусолено.
Ссылки и здесь на форуме давались много раз и поиском можно по багзилле.
Отсутствует
больше мне делать нечего как читать два десятка обсуждений на буржуйском языке
!
Отсутствует
RED
старого легендарного бага
Может расскажете за одно пару легенд, которыми оброс этот знаменательный баг, несущий тьму на всех и вся?
Бесят меня такие обороты, не в тему они совершенно. Какие нафиг легенды? Легендарная может быть битва, или воин, или.... ну уж никак не баг.
ну всё, я спать.
короче в toolkit/content/global/contentAreaUtils.js нужно эту строку:
заменить на эту:
и чуть дальше по коду повесить срабатывание следующей функции:
по окончанию загрузки. что-то у меня не получилось подцепить обработчик...
По моему вы не там роете, нужно рыть где открывает
<script src="%C6%EE%EF%EF%E0_files/__utm.htm" type="text/javascript"></script><script language="JavaScript1.5">_ujv='1.5';</script> <script src="%C6%EE%EF%EF%E0_files/util.htm" type="text/javascript"></script> <script src="%C6%EE%EF%EF%E0_files/track.htm" type="text/javascript"></script>
Эта папка есть (%C6%EE%EF%EF%E0_files) тоько в win коджировке, просто при открытии ресурсов он не делает им декодировку из UTF что-то типа decodeURI есть?
Отсутствует
Borr, в том-то и дело, что не открывает. а не открывает потому, что неправильно сохраняет.
!
Отсутствует
Borr, в том-то и дело, что не открывает. а не открывает потому, что неправильно сохраняет.
Dark-Demon, я не ориентируюсь в структуре, но думаю в C++ лезть не нужно. В contentAreaUtils.js есть saveDocument значит где-то должен быть LoadDocument и этот LoadDocument не правильно работает, как мне кажеться. А сохраняет он все правильно.
Отредактировано Borr (02-02-2008 11:09:09)
Отсутствует