PHP: <?php function save($row){ $filename ="play.txt"; if (!$handle = fopen($filename, 'w')) { print "Cannot open file ($filename)"; exit; } if (!fwrite($handle, $row)) { print "Cannot write to file ($filename)"; exit; } fclose($handle); } $row = $_POST["Song"][0]["Artist"]."\n"; $row.= $_POST["Song"][0]["Title"]; $row .="\n".$_POST["Playing"]; save($row); ?> Этот скрипт получает из проигрывателя часть ID3v2 тэга (автор\название) и сохраняет его в текстовый файл. Тэги на английском сохраняются без проблем в виде: Русские тэги сохраняются в виде: Как я понял - это шестнадцатиричный код русских букв в кодировке Win(cp1251). Мне нужно, чтобы в тектовый документ сохранялись и русские, и английские тэги в нормальном виде. Подскажите пожалуйста в чём проблема и как исправить ? PS: Я нечасто имею дело с php, но мне показалось, что в скрипте не хватает элемента типа "если hex то перекодировка в текст".
Я использовал эту функцию: PHP: function utf8_urldecode($str) { $str = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($str)); return html_entity_decode($str,null,'UTF-8');; } и поставил обработку на нужные строки. Теперь код выглядит так: PHP: <?php function save($row){ $filename ="play.txt"; if (!$handle = fopen($filename, 'w')) { print "Cannot open file ($filename)"; exit; } if (!fwrite($handle, $row)) { print "Cannot write to file ($filename)"; exit; } fclose($handle); } function utf8_urldecode($str) { $str = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($str)); return html_entity_decode($str,null,'UTF-8');; } $row = utf8_urldecode($_POST["Song"][0]["Artist"]."\n"); $row.= utf8_urldecode($_POST["Song"][0]["Title"]); $row .="\n".$_POST["Playing"]; save($row); ?> Всё получилось. Спасибо.
Проблема такого же плана, но я читаю ID3v2 прямо из файла. С англ строками всё ок, а вот русские получаются типа ";865" (притом пробовал разные скрипты, которые есть в нете - результат одинаков) Пробовал конвертировать строку в другую кодировку через iconv, но что-то всё равно ничё не меняется. Процедура выше тоже не помогла. НЕ подскажите чё делать?