Пытаюсь загрузить файл с русскими буквами на сервер. Делаю транслитерацию. На обычной строке функция выдаёт нормальный, предсказуемый результат,а когда передаю ей $_FILES['Filedata']['name']; начинается чтото не предсказуемое!

PHP код:
<?php
$todayDate = $_POST['todayDate']; //принимаем дату
$filename = $_FILES['Filedata']['name']; //имя файла
$filetmpname = $_FILES['Filedata']['tmp_name']; //адрес tmp
$fileType = $_FILES["Filedata"]["type"]; //тип файла
$fileSizeMB = ($_FILES["Filedata"]["size"] / 1024 / 1000); //размер файла
$newFileName = encodeString($filename); // Записывает в лог
$someName = encodeString("серпом_по_яйцам.png");
move_uploaded_file($_FILES['Filedata']['tmp_name'], "images/".encodeString($filename)); //сохраняем файл в папку images
$myFile = "log.txt"; //файл для хранения логов
$fh = fopen($myFile, 'a') or die("can't open file"); //открываем его
$stringData = "\n\ntodayDate: $todayDate \n FileName: $newFileName \n TmpName: $filetmpname \n Type: $fileType \n Size: $fileSizeMB MegaBytes";
fwrite($fh, $stringData); //записываем в файл логов данные
fclose($fh); //закрываем файл логов
function encodeString($st)
{
// Сначала заменяем "односимвольные" фонемы.
$st=strtr($st,"абвгдеёзийклмнопрстуфхъыэ_",
"abvgdeeziyklmnoprstufh'iei");
$st=strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ_",
"ABVGDEEZIYKLMNOPRSTUFH'IEI");
// Затем - "многосимвольные".
$st=strtr($st,
array(
"ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh",
"щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",
"Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH",
"Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA",
"ї"=>"i", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye"
)
);
// Возвращаем результат.
return $st;
}
?>
прихожу к выводу что проблема в кодировке строки которую я пытаюсь транслитерировать! Следовательно вопрос в том как поменять кодировку этой строки или как-то ещё можно исправить ситуацию?
кстати если просто записываю в лог имя файла которое приходит - пишется нормально русскими буквами, но вот после траслита корявое становится.