Кирилица записывается кракозябрами

Тема в разделе "Как сделать...", создана пользователем zilon, 7 апр 2014.

  1. zilon

    zilon

    Регистр.:
    30 июл 2011
    Сообщения:
    370
    Симпатии:
    147
    Пытаюсь через форму отправить данные и записать их в файл. Всё нормально записывается но кириллица, записывается не в той кодировке. Я отправляю

    HTML:
    "5caa145a5e0b3393ae6e6667a0871376" => "Alchemist Project - Next Day 2011 (Клуб Рай Dj Frost).mp3",
    а записывается

    HTML:
    "5caa145a5e0b3393ae6e6667a0871376" => "Alchemist Project - Next Day 2011 (Клуб Рай Dj Frost).mp3",
    подскажите пжалуста как сделать, чтобы записалось в правильной кодировке? :thenks: Вот формочка

    PHP:
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

    <
    form method="post" action="http://***************/addtrack.php">
    <
    textarea cols=100 rows=30 name=tracks>"5caa145a5e0b3393ae6e6667a0871376" => "Alchemist Project - Next Day 2011 (Клуб Рай Dj Frost).mp3",
    </
    textarea>
    <
    input type="hidden" value="rnb" name="categoriya">
    <
    br><br><input type="submit" value="отправить">
    </
    form>
    а вот скрипт

    PHP:
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

    <?php set_time_limit (0); ini_set("memory_limit""500M");
    date_default_timezone_set('Europe/Berlin');

    $tracks $_POST['tracks'];
    $_categoru $_POST['categoriya'];
    $put dirname(__FILE__);
    $put_download_get $put '/' $_categoru '/download_up_newmuzon.php';
    $put_download_put $put '/' $_categoru '/download_up_newmuzon.php';
    $tracks str_replace ('\"''"'$tracks);
    $tracks '$tracks = array (' "$tracks";
    //echo $tracks;
    $tracks iconv("windows-1251""utf-8"$tracks);
    $put_download_get file_get_contents($put_download_get);
    $put_download_get str_replace('$tracks = array ('$tracks$put_download_get);
    if(
    file_put_contents($put_download_put$put_download_get) == true)
    {
        echo 
    'записалось';
    }
    else
    {
        echo 
    'не записалось';
    }

    ?>
     
  2. dwarf

    dwarf Постоялец

    Регистр.:
    12 июн 2011
    Сообщения:
    88
    Симпатии:
    18
    если все приведенные файлы в utf-8
    то в скрипте сохранения есть лишняя строчка
    PHP:
    $tracks iconv("windows-1251""utf-8"$tracks);
    текст и так прилетает в utf-8 и эта конвертация ломает кодировку.
     
    zilon нравится это.
  3. gusewww

    gusewww

    Регистр.:
    4 июл 2011
    Сообщения:
    665
    Симпатии:
    294
  4. zilon

    zilon

    Регистр.:
    30 июл 2011
    Сообщения:
    370
    Симпатии:
    147
    спасибо заработало) оказалось что файл в который записывают был в cp1251

    Но проблема начала выглядеть несколько иначе. Если файл в в который записывается строка

    "5caa145a5e0b3393ae6e6667a0871376" => "Alchemist Project - Next Day 2011 (Клуб Рай Dj Frost).mp3",

    сохранён в кодировке utf-8 то трек не скачивается, а если он сохранен в cp1251 то трек скачиваеться. Что можно сделать? все 3 файла пере конвертировать в cp1251 и будет работать?
     
    Последнее редактирование: 7 апр 2014
  5. dwarf

    dwarf Постоялец

    Регистр.:
    12 июн 2011
    Сообщения:
    88
    Симпатии:
    18
    скорее всего так происходит из-за того, что имя mp3 файла в файловой системе в cp-1251
    можно оставить файл "5caa145a5e0b3393ae6e6667a0871376" => "Alchemist Project - Next Day 2011 (Клуб Рай Dj Frost).mp3", в кодировке cp-1251, а прилетающие из формы данные кодировать в нее же:
    Код:
    $tracks = iconv("utf-8", "windows-1251", $tracks);
     
    zilon нравится это.