Hello, Alexey Markov!

On Wed, Sep 07, 2011 at 01:57:25PM +0400
[email protected] wrote about "[freebsd] Странный глюк с локалью UTF-8 в 6.4":
> Приветствую!
> 
> В процессе отлавливания одного бага в PHP-шном модуле наткнулся
> на крайне загадочное поведение фришной UTF-8 локали. Но лучше
> один раз показать:
> 
> FreeBSD 6.4-RELEASE-p11 i386, PHP 5.3.8, маленький тестовый скрипт:
> 
> =========Beginning of the citation==============
> #!/usr/local/bin/php
> 
> <?php
> 
> $src = "абвгдеёжзиклмнопрстуфхцчшщъыьэюя";
> 
> echo preg_replace('/[ \t]+/', " ", $src) . "\n";
> echo preg_replace('/\s+/', " ", $src) . "\n";
> echo preg_replace('/\s\s+/', " ", $src) . "\n";
> echo preg_replace(array('/[[:blank:]]+/', '/\s+/'), " ", $src) . "\n";
> echo preg_replace(array('/[[:blank:]][[:blank:]]+/', '/\s\s+/'), " ", $src) 
> . "\n";
> =========The end of the citation================
> 
> Если зайти на сервер под локалью KOI8-R и запустить этот скрипт,
> то получим 5 идентичных строчек с русским алфавитом. Если же этот
> скрипт запустить под локалью UTF-8, то во второй и четвёртой строчке
> буква "х" превратится в псевдографику с пробелом.

Зайти под локалью и запустить -- это как?
Скрипт один и тот же, сохраненный в файле на сервере или каждый раз
под новой локалью создавать новый скрипт и запускать?


> В любой другой кодировке данный баг не проявляется, на 8-ке и Линуксах
> также всё нормально. Очевидно, дело в 6-ке, но в силу целого ряда причин
> обновить данный сервер до 8-ки пока не представляется возможным, а баг
> этот ломает работу нужного плагина для Вики. Оформлять PR смысла нет,
> так как поддержка 6-ки официально прекращена.
> 
> В общем, прошу совета - что можно сделать, чтобы обойти на 6-ке этот баг?
> "Выкинуть 6-ку, PHP или Вику" проблему, к сожалению, не решают.

-- 
 Lystopad Olexandr 

Ответить