curlでAPIを呼び出して返ってきたjsonデータ内の日本語が
文字化けする時の対処方法。色んなサイトを見て色々試した
けどうまくいかなかったり処理が大げさ過ぎたり。
decodeしたのをまたencodeして何やってんだ?って記述だけど、
少なくとも1行で目的は達成できたので紹介。
<?php $mojibake_kaishou = json_encode(json_decode($response), JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT); ?>
curlの全体の処理はこちら。
<?php //curlの開始 $curl = curl_init(); // オプション設定 $options = array( CURLOPT_URL => $url, CURLOPT_CUSTOMREQUEST => $method, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPPROXYTUNNEL => true, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_TIMEOUT => $curlopt_timeout, ); //オプションの設置 curl_setopt_array ($curl, $options); //curl実行/リスポンスの代入 $response = curl_exec($curl); //Uniodeエスケープを元に戻す(ログ出力用) $unicode_decode_json = json_encode(json_decode($response), JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT); //Uniodeエスケープを元に戻し、配列に変換する(返り値用) $unicode_decode_array = json_decode(json_encode(json_decode($response), JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT)); //(curlの戻り値に含まれる日本語がunicodeエスケープされ文字表示されないため一度decodeし、エスケープ処理なしで再度encodeし、それをまたdecodeしている) ?>