РЕДАКТИРОВАТЬ: сценарий, упомянутый в вопросе, и другой сценарий указывал среди ответов, оба прекрасно работают с многобайтовыми строками - оказалось, что моя проблема была в другом месте. * Кто-нибудь знает о такой реализации? Сценарий на http://phpjs.org/functions/view/469 работает хорошо, но не на многобайтовых строках.
Эта реализация , кажется, правильно обрабатывает строки UTF-8. Если вы хотите протестировать демо, убедитесь, что вы сначала изменили кодировку страницы на UTF-8 в настройках своего браузера.
Написанный вами скрипт имеет str = utf8_encode(str);. Вы, вероятно, должны удалить эту строку и передать свою кириллицу как UTF-8.
str = utf8_encode(str);