8

私の仕事は簡単です。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');

しかし、私は得る

ÐÒÉ×ÅÔ

この問題を解決する方法を知っている人はいますか?

アップデート:

  1. 私のphpファイルはすべてBOMなしのUTF-8でエンコードされていることを忘れていました
  2. 「to」言語を「en」に変更すると、つまり英語から英語に翻訳されますが、問題なく動作します。
  3. $page全体をライブラリ関数に渡さずに出力しようとしたため、使用しているライブラリが台無しになっているとは思いません。
  4. 私はPHP 5を使用しています
4

3 に答える 3