allter: (Default)
allter ([personal profile] allter) wrote2008-03-11 10:18 am
Entry tags:

Перловикам о кодировках

1. В стандартной поставке perl 5.10 появился очень нужный, по идее, модуль - encoding::warnings, который включает предупреждение о неявном преобразовании 8-битных байтовых строк в юникодовые строки. Поскольку я недавно "прострелил с его помощью ногу", хочу предупредить коллег, что этот модуль принципиально не совместим со случаем, когда байтовые строки задаются с помощью литералов (т.е. в разного рода кавычках) после "use encoding::warnings", поскольку при этом указанные строки неявно преобразуются в юникод с помощью кодировки latin-1 (и без всяких варнингов).

2. Появилась идея, как сделать декодировку 8-битных исходников полностью без побочных эффектов. Появившийся на CPANе encoding::source, кроме того, что требует perl >= 5.9.5, допускает вылезание $^ENCODING за стадию компиляции программы.
К сожалению, моя идея требует perl 5.10, т.к. только в 5.10 %^H работает, как нужно.

3. Вообще, perl 5.10 создаёт впечатление очень хорошо проделанной работы, можно потихоньку его продвигать на продакшн сервера.