Моя задача проста: сделать запрос на translate.google.com и получить перевод.
В следующем примере я использую слово «привет» для перевода на русский язык.
header('Content-Type: text/plain; charset=utf-8'); // optional
error_reporting(E_ALL | E_STRICT);
$context = stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => implode("\r\n", array(
'Content-type: application/x-www-form-urlencoded',
'Accept-Language: en-us,en;q=0.5', // optional
'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7' // optional
)),
'content' => http_build_query(array(
'prev' => '_t',
'hl' => 'en',
'ie' => 'UTF-8',
'text' => 'hello',
'sl' => 'en',
'tl' => 'ru'
))
)
));
$page = file_get_contents('http://translate.google.com/translate_t', false, $context);
require '../simplehtmldom/simple_html_dom.php';
$dom = str_get_html($page);
$translation = $dom->find('#result_box', 0)->plaintext;
echo $translation;
Строки, помеченные как необязательные, - это те, без которых вывод одинаков. Но я получаю странные персонажи ...
������
Я пытался
echo mb_convert_encoding($translation, 'UTF-8');
Но я получаю
ÐÒÉ×ÅÔ
Кто-нибудь знает, как решить эту проблему?
UPDATE:
- Забыл упомянуть, что все мои php
файлы кодируются в UTF-8 без
BOM
- Когда я меняю язык "на"
на «en», то есть перевод с
с английского на английский, работает нормально.
- Я не думаю, что библиотека, которую я использую, испортила ее, потому что я пыталась вывести всю страницу $, не передав ее функциям библиотеки.
- Я использую PHP 5