В комментарии к ответу на этот вопрос было дано указание, что PHP не может отменить строки Unicode.
Что касается Unicode, он работает в PHP потому что большинство приложений обрабатывают его как двоичный файл. Да, PHP 8-битный. Пытаться эквивалент этого в PHP: perl -Mutf8 -e 'сканировать скалярный реверс ( "ほ げ ほ げ" ) "Вы получите мусор, а не" げ ほ げ ほ". - jrockway
И, к сожалению, правильно, что поддержка юникода PHP в atm в лучшем случае "отсутствует". Это будет надеюсь, кардинально изменится с PHP6.
PHP Функции MultiByte предоставляют основные функции, необходимые для работы с unicode, но они несовместимы и не имеют большого количества функций. Одна из них - это функция для изменения строки.
Я, конечно, хотел отменить этот текст по другой причине, чтобы выяснить, возможно ли это. И я сделал функцию для выполнения этой огромной сложной задачи по обращению этого текста в Юникоде, поэтому вы можете немного расслабиться до PHP6.
Тестовый код:
$enc = 'UTF-8';
$text = "ほげほげ";
$defaultEnc = mb_internal_encoding();
echo "Showing results with encoding $defaultEnc.\n\n";
$revNormal = strrev($text);
$revInt = mb_strrev($text);
$revEnc = mb_strrev($text, $enc);
echo "Original text is: $text .\n";
echo "Normal strrev output: " . $revNormal . ".\n";
echo "mb_strrev without encoding output: $revInt.\n";
echo "mb_strrev with encoding $enc output: $revEnc.\n";
if (mb_internal_encoding($enc)) {
echo "\nSetting internal encoding to $enc from $defaultEnc.\n\n";
$revNormal = strrev($text);
$revInt = mb_strrev($text);
$revEnc = mb_strrev($text, $enc);
echo "Original text is: $text .\n";
echo "Normal strrev output: " . $revNormal . ".\n";
echo "mb_strrev without encoding output: $revInt.\n";
echo "mb_strrev with encoding $enc output: $revEnc.\n";
} else {
echo "\nCould not set internal encoding to $enc!\n";
}