我們主要是用到php 調用google在線翻譯功能哦,post一個遠程地址再用curl讀取google翻譯後的值就OK了。
我們主要是用到php 調用google在線翻譯功能哦,post一個遠程地址再用curl讀取google翻譯後的值就OK了。
class Google_API_translator {
public $out = "";
function translate() {
$this->out = "";
$text = urlencode("computer");//要翻譯的單詞
$google_translator_url = "http://translate.google.com/translate_a/t?client=t&text=".$text."&sl=en&tl=zh_CN";
//拼湊google翻譯的api url
$gphtml = $this->postPage(array("url" => $google_translator_url));
$this->out = $gphtml;
return $this->out;
}
function postPage($opts) {
$html = "";
if($opts["url"] != "") {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $opts["url"]);
$html = curl_exec($ch);
if(curl_errno($ch)) $html = "";
curl_close ($ch);
}
return $html;
}
}
$g = new Google_API_translator();
$g->translate();
很完美,返回的結果中沒有任何編碼問題。從google返回的中文編碼完全正確。
接下來,能不能反向翻譯,從中文到英文哪?
class Google_API_translator {
public $out = "";
function translate() {
$this->out = "";
$text = urlencode("計算機");//要翻譯的單詞
$google_translator_url = "http://translate.google.com/translate_a/t?client=t&text=".$text."&sl=zh_CN&tl=en";
echo $google_translator_url;
$gphtml = $this->postPage(array("url" => $google_translator_url));
$this->out = $gphtml;
return $this->out;
}
function postPage($opts) {
$html = "";
if($opts["url"] != "") {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $opts["url"]);
$html = curl_exec($ch);
if(curl_errno($ch)) $html = "";
curl_close ($ch);
}
return $html;
}
}
$g = new Google_API_translator();
$g->translate();
問題出現了,返回的是一個亂碼。詭異的是,這次接受的是google發送過來的英文單詞,怎麼會有編碼錯誤?
是php的curl無法發送unicode編碼或者google在接受的過程中出現了問題嗎? 復制PHP內容到剪貼板 PHP代碼:echo $google_translator_url;
得到的url是 復制PHP內容到剪貼板 PHP代碼:http://translate.google.com/translate_a/t?client=t&text=%E8%AE%A1%E7%AE%97%E6%9C%BA&sl=zh_CN&tl=en
直接把這個url輸入浏覽器的地址欄,沒有任何問題(IE,Firefox均能通過)。
假設途中unicode的傳送出現了解析方面的問題,在api的url上更改了一下,把"&sl=zh_CN&tl=en"更改為完全錯誤的參數 復制PHP內容到剪貼板 PHP代碼:http://translate.google.com/translate_a/t?client=t&text=%E8%AE%A1%E7%AE%97%E6%9C%BA&sl=en&tl=en
奇怪了這次php頁面倒是能夠接受到google發回來的中文字符串,但是死活就是無法顯示使用正確的編碼參數google發送過來結果。