Сообщение от oneguy
|
Можно написать функии на PHP, переводящие строки из UTF-8 в CP1251 и обратно, и применять строковые операции к строкам в CP1251
|
Да, была такая идея, и вот реализация.
function str_caller() {
$args = func_get_args();
$f = array_shift($args);
$r = call_user_func_array($f, str_caller_encode($args));
$r = str_caller_encode(array($r), true);
return $r[0];
}
function str_caller_encode($args, $b=false) {
foreach($args as $k => $v) {
if (is_string($v)) {
if ($b) $args[$k] = iconv('windows-1251', 'utf-8', $v);
else $args[$k] = iconv('utf-8', 'windows-1251', $v);
}
if (is_array($v)) $args[$k] = str_caller_encode($v, $b);
}
return $args;
}
Вопрос, на сколько это безопасно. Вдруг какие-либо php-функции таки умеют работать с UTF-8 и неправильно переварят вызванный таким образом cp1251. Не хочется лишней путаницы.