Jul 09, 2009 11:48
Мне часто рассказывают, что перл хороший язык. Но вот сегодня я поймал такой показательный баг того что он на самом деле из себя представляет.
И так дано два модуля:
SOAP::Lite и DBD::Pg.
Пока не дергаются soap методы, DBD::Pg работает как надо. Как только дергаешь SOAP метод происходит подключение автоматической перекодировки строк в utf8. Т.е. вызовы вида $pdbh->do($query); даже при правильно сформированной строке пишут в базу гарантированую херню в случае если у нас однобайтовая кодировка. Почему? Потому что кто-то умный решил, что надо перекодировать все. Как отключить не понятно. И что самое веселое, что при этом perl про unicode мало чего знает. Я хуею от этого зоопарка.
UPD: после курения доков и модулей выяснилось, что SOAP::Lite в тихушку включает utf8 и не выключает, как результат все ломается. Выключение utf8 помогло.
perl,
идиоты на проводе,
unicode