我的任务很简单:向translate.google.com发帖请求并获取翻译.
在下面的例子中,我使用“hello”这个词翻译成俄语.
在下面的例子中,我使用“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');
但我明白了
ÐÒÉ×ÅÔ
有人知道如何解决这个问题吗?
更新:
>忘了提到我所有的PHP
文件以UTF-8编码而没有
BOM
>当我改变“to”语言
到“en”,即从中翻译
英语到英语,它运作正常.
>我不认为我正在使用的库正在弄乱它,因为我试图输出整个$页面而不将其传递给库函数.
>我使用的是PHP 5
首先,您的浏览器是否设置为UTF-8?在Firefox中,您可以在View-> Character Encoding中设置文本编码.确保选择“Unicode(UTF-8)”.我还将View-> Character Encoding-> Auto-Detect设置为“Universal”.
其次,您可以尝试传递FILE_TEXT标志,如下所示:
$page = file_get_contents('http://translate.google.com/translate_t',FILE_TEXT,$context);