Anti-debugging
Feb. 18th, 2005 02:47 pmХочется странного. :)
Когда-то ставили RT3 (http://bestpractical.com/rt/ кто не знает). Не пошёл по совершенно идиотской причине: при нажатии в вебморде reply/comment, текст (который в базе в utf-8) подвергался конвертированию iso-8859-1 -> utf-8, с соответствующими последствиями.;((( Плюнули, поставили RT2 с русификационными патчами и успокоились.
Есть организация Z где сейчас RT3. Эффект регулярно повторяется. Решил поймать. Оживил RT3, не могу повторить - всё нормально работает. Пробую в Z - тоже не повторяется (хотя раньше с тем же браузером работало!)
У нас perl 5.8.5 (на первой пробе был 5.6.1), у Z - 5.8.5, админ клянётся что ничего не менял. Взял тамошние настройки кодировок - тоже работает.
Смотрю сейчас на всю эту картину и пытаюсь понять: правильно ли, что всё работает и я не знаю, почему оно работает? Пытаться добиться прежнего эффекта или, как с большинством остальных программ, считать, что раз у меня всё работает - вообще не надо ничего искать?
Хотелось бы забить на старые баги, но какое-то чувство, что меня накалывают и что не должна гордость позволять мириться с этим...
Когда-то ставили RT3 (http://bestpractical.com/rt/ кто не знает). Не пошёл по совершенно идиотской причине: при нажатии в вебморде reply/comment, текст (который в базе в utf-8) подвергался конвертированию iso-8859-1 -> utf-8, с соответствующими последствиями.;((( Плюнули, поставили RT2 с русификационными патчами и успокоились.
Есть организация Z где сейчас RT3. Эффект регулярно повторяется. Решил поймать. Оживил RT3, не могу повторить - всё нормально работает. Пробую в Z - тоже не повторяется (хотя раньше с тем же браузером работало!)
У нас perl 5.8.5 (на первой пробе был 5.6.1), у Z - 5.8.5, админ клянётся что ничего не менял. Взял тамошние настройки кодировок - тоже работает.
Смотрю сейчас на всю эту картину и пытаюсь понять: правильно ли, что всё работает и я не знаю, почему оно работает? Пытаться добиться прежнего эффекта или, как с большинством остальных программ, считать, что раз у меня всё работает - вообще не надо ничего искать?
Хотелось бы забить на старые баги, но какое-то чувство, что меня накалывают и что не должна гордость позволять мириться с этим...
no subject
Date: 2005-02-18 01:29 pm (UTC)Что могу сказать... работает - молись. Или пройдись по RT3 и расставь "use bytes" везде где только можно.
PS: RT3 must die.
no subject
Date: 2005-02-18 02:07 pm (UTC)Рассказать можешь?
> Что могу сказать... работает - молись. Или пройдись по RT3 и расставь "use bytes" везде где только можно.
Почитал ман... не нашёл связи. Прошу подробностей.
> PS: RT3 must die.
Воистину, отче :) Но ведь работает?
Что хочется сейчас добавить к ней - редукцию кодировок выходных писем. То есть, если можно уложить в us-ascii - чтобы уложило и поставило соответствующий charset, и так далее.
Отличный пример как это делается показывает mutt.
no subject
Date: 2005-02-18 02:11 pm (UTC)Все очень просто - перл пытается распознать, где идет строка в utf8 и тут же ее апгрейдит в utf8-представление у себя самого внутри. Это кошмар, ужас и я даже не знаю что сказать. Отключить у перла эту фичу удалось только на 5.8.6 путем прописывания use bytes во ВСЕ блоки кода (ну, я имею в виду пекеджи).
Это НЕ лечится.
Маст дай!
И это тоже геморройно.
no subject
Date: 2005-02-19 07:41 am (UTC)==={{{
"use encoding" needed to upgrade non-Latin-1 byte strings By default, there is a fundamental asymmetry in Perl's unicode model: implicit upgrading from byte strings to Unicode strings assumes that they were encoded in ISO 8859-1 (Latin-1), but Unicode strings are downgraded with UTF-8 encoding. This happens because the first 256 codepoints in Unicode happens to agree with Latin-1. If you wish to interpret byte strings as UTF-8 instead, use the "encoding" pragma: use encoding 'utf8'; See "Byte and Character Semantics" for more details.===}}}
Конечно, лучше сделать чтобы вообще не было implicit upgrading, но это может оказаться проблемой сторонних модулей вроде DBI/DBD.
no subject
Date: 2005-02-21 09:48 am (UTC)Лечится только полным выключением implicit upgrade - "use bytes" в каждый модуль.
no subject
Date: 2005-02-27 06:13 am (UTC)no subject
Date: 2005-02-27 11:41 am (UTC)no subject
Date: 2005-02-27 06:24 pm (UTC)непонятно, чем такого достичь. Так что метод с use bytes считаю
преждевременным.