Microsoft Translator api返回奇怪的字符

时间:2016-06-03 00:16:01

标签: php api curl bing

也许有人可以帮我这个。使用Microsoft开发人员api进行翻译文本将输出例如英文版本的文本,“此电子邮件地址已经注册!”像这样的法语“Cette adresse emailestdéjéenregistrée!”这应该是这样的:“Cette adresse emailestdéjàenregistrée!”。有没有办法来解决这个问题。我的简单脚本是php:

public function translate($word, $from, $to)
{
  //retrieve token
  $access_token = $this->get_access_token();
  $url = 'http://api.microsofttranslator.com/V2/Http.svc/Translate?text='.urlencode($word).'&from='.$from.'&to='.$to;

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url); 
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization:bearer '.$access_token,"Content-Type: text/xml"));
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, False);  
  $rsp = curl_exec($ch); 

  $xmlObj = simplexml_load_string($rsp);
  foreach((array)$xmlObj[0] as $val){
      $translatedStr = $val;
  }

  return $translatedStr;
}

1 个答案:

答案 0 :(得分:1)

检查一下:

PHP Curl UTF-8 Charset

正如它所说:

  

简单:当你使用curl时,它将字符串编码为utf-8,你只需解码它们。

     

描述

     

string utf8_decode ( string $data )

     

此功能将假定为UTF-8编码的数据解码为ISO-8859-1。