Попробуй поиграть с кодировками через
convert_cyr_string().
При установки кукиса конвертишь строку в одну из кодировок, при забирании данных из кукиса - конвертишь обратно.
Если не получится, попробуй переконвертить строку в uni - код (вид &#{$charcode};&#{$charcode};&#{$charcode}

, тогда ты его можешь без преобразований делать document.write, и вывод будет корректным. Браузер поймёт uni и отобразит буквы, коды которых указаны.
Только отпишись потом тут, интересно получится или нет

Удачи!