csv(utf-16le)のファイルから良い感じに情報を取得する
これはなに
google play storeのレビューをslackにポストする、ってのをしようとして、データを良い感じにとるところで、文字化けとかデータにゴミが入ったりなどでつらみあったので、メモ。
やったこと
まずレビューcsvを取得するところは、提供されてるgsutil
を使う。
以下とかに書いてあるのを適当に見て使う。
Android - アプリのレビューを HipChat で自動通知する - Qiita
データcsv取得自体は、gsutil cp gs://<report bucket ID>/reviews/reviews_<package name> /path/to/your/local/dir
とやって取ったりする。
で、ここから
<?php $file = '/path/to/reviews.csv'; $data = file_get_contents($file); $data = mb_convert_encoding($data, 'UTF-8', 'utf-16le'); // これ大事 $temp = tmpfile(); $csv = array(); fwrite($temp, $data); rewind($temp); while (($data = fgetcsv($temp, 0, ",")) !== FALSE) { $csv[] = $data; } fclose($temp); var_dump($csv);
レビューcsvがutf-16leでできてるので、これを指定すると文字化けせず、ゴミも除去した形で取得できる。ちょとハマったのでメモ。
あと、ここも参考になりました。PHPのテクメモ » Blog Archive » UTF-16LEをUTF-8に変換したら末尾の文字が消える
以上