3

Google の翻訳 API で以下の PHP コードを使用していますが、json_encodeUTF-8 入力が必要であることを読みました。Google が UTF-8 でエンコードされた文字を返しているかどうかをどのように知ることができるのでしょうか?

// URL Encode string
$str = urlencode($str);

// Make request
$response = file_get_contents('https://www.googleapis.com/language/translate/v2?key=' . GTRAN_KEY . '&target=es&source=en&q=' . $str);

// Decode json response to array
$json = json_decode($response,true);
4

1 に答える 1

5

失敗した場合json_decode(文字セットの問題を含む何らかの理由で)、 が返されるnullため、それを確認できます。エンコーディングを具体的にチェックするには、を使用できますmb_detect_encoding

if(!mb_detect_encoding($response, 'UTF-8', true)){
  // error: no utf-8
}else{
  $json = json_decode($response,true);
  if($json === null){
    // error: json_decode failed (or google returned 'null')
  }else{
    // ok, do great stuff here
  }
}
于 2012-05-05T08:51:16.757 に答える