ФорумПрограммированиеPHP для идиотов → Проблема с кодировкой в POST запросе

Проблема с кодировкой в POST запросе

  • Profer

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz 9 декабря 2009 г. 16:21

    Пытаюсь произвести POST запрос на сайт. Если забивать текст руками прямо в файл скрипта, т.е. например $text="один два три";, то хост принимает текст нормально и обрабатывает. Если же пытаюсь загрузить из файла, например $text=file_get_contents('file.txt'); , то хост говорит, что не введён текст. Проблема только при вводе русских букв, если вводить на латинице, то всё работает.
    Сам скрипт в кодировке UTF-8, текстовы файл тоже в кодировке UTF-8.

    Исходник:

    <?php
    ini_set('default_charset','UTF-8');
    $text=file_get_contents('file.txt');
    $content='content='.$text.'&param1=проверка&param2=on';
    $url = "http://site.com/result/";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url); // set url to post to
    curl_setopt($ch, CURLOPT_FAILONERROR, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// allow redirects
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
    curl_setopt($ch, CURLOPT_TIMEOUT, 3); // times out after 4s
    curl_setopt($ch, CURLOPT_POST, 1); // set POST method
    curl_setopt($ch, CURLOPT_POSTFIELDS, $content); // add POST fields
    $result = curl_exec($ch); // run the whole process
    curl_close($ch);
    echo $result;
    ?>


    P.S. если нужно, название сайта, к которому обращаюсь - http://istio.com/rus/text/result/.
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 9 декабря 2009 г. 16:29, спустя 8 минут 52 секунды

    Profer, дайте ваш файл, посмотрю
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Profer

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz 9 декабря 2009 г. 16:34, спустя 4 минуты 44 секунды

    Отправил на мэйл, указанный в вашем профиле.
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 9 декабря 2009 г. 16:52, спустя 18 минут 13 секунд

    Это BOM, так как у вас в начале файла "EF BB BF"
    Спустя 44 сек.
    Либо сохраняйте в UTF-8 без BOM, либо убирайте эти байты
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Profer

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz 9 декабря 2009 г. 17:08, спустя 15 минут 55 секунд

    Спасибо, у меня были подозрения на этот счёт, когда я пробовал сохранять через notepad++ в разные кодировки.
    А как можно программно через php преобразовать файл в UTF без BOM или удалить первые байты тогда из файла?
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 9 декабря 2009 г. 17:33, спустя 24 минуты 56 секунд

    <?php
    function removeBOM($str=""){
    if(substr($str, 0,3) == pack("CCC",0xef,0xbb,0xbf)) {
    $str=substr($str, 3);
    }
    return $str;
    }
    ?>

    http://forums.digitalpoint.com/showthread.php?t=592115
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 9 декабря 2009 г. 18:25, спустя 51 минуту 35 секунд

    adw0rd, первый пост в избранном
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 9 декабря 2009 г. 18:32, спустя 7 минут 6 секунд

    порефкторим?

    <?php
    function removeBOM($str=""){
    if(substr($str, 0,3) == pack("CCC",0xef,0xbb,0xbf)) {
    $str=substr($str, 3);
    }
    return $str;
    }
    ?>


    <?php
    function removeBOM($str=""){
    return substr($str, 0,3) == "\xEF\xBB\xBF" ? substr($str, 3) : $str;
    }
    ?>
    Сапожник без сапог
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 9 декабря 2009 г. 18:51, спустя 19 минут 5 секунд

    phpdude, ты знаешь то что ты называешь рефакторингом, называется переписыванием кода…
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 9 декабря 2009 г. 22:35, спустя 3 часа 43 минуты 32 секунды


    phpdude, ты знаешь то что ты называешь рефакторингом, называется переписыванием кода…
    ну да, тут я хотел порефакторить и переборщил ^^
    Сапожник без сапог
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 10 декабря 2009 г. 1:47, спустя 3 часа 12 минут 19 секунд

    phpdude, ненене….

    я о том что рефакторинг это когда ты меняешь иерархию классов, двигаешь методы вверх-низ по дереву классов
    то есть рефакторинг не имеет ничего общего с переписыванием бизнес логики
    а то что ты делаешь это оптимизация кода

    ЗЫ читаем Фаулера
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 10 декабря 2009 г. 3:00, спустя 1 час 12 минут 46 секунд


    phpdude, ненене….

    я о том что рефакторинг это когда ты меняешь иерархию классов, двигаешь методы вверх-низ по дереву классов
    то есть рефакторинг не имеет ничего общего с переписыванием бизнес логики
    а то что ты делаешь это оптимизация кода

    ЗЫ читаем Фаулера
    а ну да))

    чтото я ступил, извиняюсь :)
    Сапожник без сапог
  • Profer

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz 10 декабря 2009 г. 11:43, спустя 8 часов 43 минуты 24 секунды

    Спасибо, помогло)
  • Mr.Pihto

    Сообщения: 1386 Репутация: N Группа: Адекваты

    Spritz 10 декабря 2009 г. 14:22, спустя 2 часа 39 минут 7 секунд

    В notepad++ можно же и в utf8 без бом преобразовать. Или влом все фаилы конвертить?)

Пожалуйста, авторизуйтесь, чтобы написать комментарий!