PHP调用google translate中解决中文返回乱码

裴育
2023-12-01

在网上找了段代码获取google翻译结果,不是调用API的。

结果返回结果中中文乱码,并且结果不正确,那么其实发过去的时候就转码有问题。

返回来的就有问题。

$google = $this->curl_file_get_contents("http://translate.google.com/translate_a/t?client=t&text=".$text."&sl=zh_CN&tl=en");

原来的写法返回的中文乱码

解决方法:

加入

$google = $this->curl_file_get_contents("http://translate.google.com/translate_a/t?client=t&ie=UTF-8&oe=UTF-8&text=".$text."&sl=zh_CN&tl=en");
echo $google

返回结果正常

    public function curl_file_get_contents($durl){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $durl);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回
        curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ; // 在启用 CURLOPT_RETURNTRANSFER 时候将获取数据返回
        $r = curl_exec($ch);
        curl_close($ch);
        return $r;
    }

修改后的完整源代码:

<?php
        
    header("Content-Type: text/html; charset=utf-8");

    class Google_API_translator {

        public $out = "";

        function translate( $content, $s, $t ) {
            
            $this->out = "";
            
            $text = urlencode( $content );//要翻译的单词  

            $google_translator_url = "http://translate.google.com/translate_a/t?client=t&ie=UTF-8&oe=UTF-8&text=".$text."&sl=".$s."&tl=".$t;
         
            $gphtml = $this->postPage(array("url" => $google_translator_url));

            $this->out = utf8_encode($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( $_GET['q'], $_GET['s'], $_GET['t']);

?>

访问方法:

http://eqiyu.cn/translator.php?q=%E6%B5%8B%E8%AF%95&s=zh-CN&t=ja

返回:

[[["テスト","测试","Tesuto","Cèshì"]],,"zh-CN",,[["テスト",[1],false,false,999,0,1,0]],[["测试",1,[["テスト",999,false,false],["試験",0,false,false],["検査",0,false,false],["のテスト",0,false,false],["実験",0,false,false]],[[0,2]],"测试"]],,,[["zh-CN"]],13]

http://eqiyu.cn/translator.php?q=%E6%B5%8B%E8%AF%95&s=zh-CN&t=en

返回:

[[["Test","测试","","Cèshì"]],[["noun",["test","examination"],[["test",["测试","试验","试","实验","考试","考验"],[15246],0.29559943],["examination",["考试","检查","试","研究","测试","察看"],[15246],0.00026955179]],"测试",1]],"zh-CN",,[["Test",[1],true,false,542,0,1,0]],[["测试",1,[["Test",542,true,false],["Testing",38,true,false],["Tests",2,true,false],["Tested",0,true,false],["The test",0,true,false]],[[0,2]],"测试"]],,,[],3]

client=t //修改参数,client=j则返回json,貌似只要不是t和空的都返回json

 类似资料: