Моя задача проста: сделайте почтовый запрос на translate.google.com и получите перевод. В следующем примере я использую слово «hello» для перевода на русский язык.
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');
Но я получаю
ÐÒÉ×ÅÔ
Кто-нибудь знает, как решить эту проблему?
ОБНОВИТЬ:
Во-первых, ваш браузер установлен в UTF-8? В Firefox вы можете установить текстовую кодировку в режиме просмотра -> Кодировка символов. Убедитесь, что вы выбрали «Unicode (UTF-8)». Я бы также установил View-> Character Encoding-> Auto-Detect на «Universal».
Во-вторых, вы можете попробовать передать флаг FILE_TEXT, например:
$page = file_get_contents('http://translate.google.com/translate_t', FILE_TEXT, $context);
Попытайтесь увидеть этот пост, если он может помочь проблеме кодирования символов импорта CURL
Также вы можете попробовать этот фрагмент (взятый из php.net)
<?php function file_get_contents_utf8($fn) { $content = file_get_contents($fn); return mb_convert_encoding($content, 'UTF-8', mb_detect_encoding($content, 'UTF-8, ISO-8859-1', true)); } ?>
Accept-Charset на самом деле не является обязательным. Здесь вы должны указать UTF8. Российские символы недействительны в ISO_8859-1