Perl, utf8, upload
Submitted by admin on Sun, 04/06/2008 - 16:16.
Имел несчастье полностью перейти на UTF-8 в одном своём проекте, который, вероятно, скоро анонсирую.
Я давно не встречал настолько неудачного и неудобного инженерного решения. Одна из наиболее выдающихся проблем - бинарные данные, передаваемые в multipart-form, CGI.pm в целом.
Если не использовать use encoding 'utf8' то форма с кириллицей автозаполняется мусором (если нет override) и данные в базу передаются с неправильной кодировкой, если использовать - бинарные данные из формы перекодируются в полный треш, несмотря на:
- binmode STDIN =>':raw';
- my $upload_filehandle = $cgi->upload($name);
binmode $upload_filehandle, ':raw'; - open (my $fh_out, '>:raw', $temp_name)
Теперь всё работает (давно я не пользовался чёрной магией столь высоких ступеней), но я чертовски разочарован. Поиск в сети показал, что я не одинок в своём разочаровании...
