Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   кодировка или.... (https://javascript.ru/forum/server/5124-kodirovka-ili.html)

HelpeR 17.09.2009 20:09

кодировка или....
 
Здравствуйте! не могу разобраться в чем тут дело, но думаю, что дело в кодировке! Скрипт который подключается к гуглу для перевода. Если переводится с англ на русс, то все ок, а если наоборот то в ответ получаю (???? ????? ????)
<?php
function translate($str, $from, $to){
    if( $curl = curl_init() ){

        // Задаем ссылку
        curl_setopt($curl,CURLOPT_URL,'http://translate.google.com/translate_t#');
        // Скачанные данные не выводить поток
        curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt ($curl, CURLOPT_HTTPHEADER, array('Expect:'));
        curl_setopt($curl, CURLOPT_POSTFIELDS, 'client=t&text='.urlencode($str).'&sl='.$from.'&tl='.$to); 

        // Задаем тип проски - сокс5
        //curl_setopt($curl,CURLOPT_PROXYTYPE,CURLPROXY_SOCKS5);

        // Указываем сам сокс
        //curl_setopt($curl,CURLOPT_PROXY,'127.0.0.1:1080'); 

        // Скачиваем
        $out = curl_exec($curl);

        // Показываем скачанные данные
        $res = preg_match('/<div id=result_box dir=\"ltr\">([^<]*)/',$out,$ss);

        // Закрываем соединение
        curl_close($curl);
        return $ss[1];
    }
}
$str = 'Это русский текст';

echo translate($str, "ru", "en");
?>

Gvozd 17.09.2009 21:48

iconv вам в помощь.ваш файл наверняка в кодировке cp1251
отсылать скорее всего надо в UTF-8

HelpeR 17.09.2009 21:50

пытался, чего уже только не перепробовал, нечего не помогает, вот и решил обратиться за помощью. Странное одно, почему перевод удается с анл на рус, а вот обратно нет

Gvozd 17.09.2009 22:27

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

HelpeR 17.09.2009 23:15

уже второй день, как только не пытаюсь. Если в курл вставлять заголовок с кодировкой, то гугл вообще не производит перевода

Gvozd 18.09.2009 07:49

Цитата:

Сообщение от HelpeR
Если в курл вставлять заголовок с кодировкой

зачем?
максимум что мы можем- попросить отдать в ожидаемой кодировке
советую взять firebug, или какой-нить снифер траффика, и глянуть/досконально скопировать что передает браузер на сервер при конкретном запросе
затем уже смотреть в какой кодировке он посылает запрос, и в какой получает
PS если тебе важен результат, я мог взятся за эту задачу на платной основе


Часовой пояс GMT +3, время: 16:45.