LoginSignup
3
1

More than 3 years have passed since last update.

Google Cloud Storage へCSVをアップロードすると文字化けする→jsonで解決

Last updated at Posted at 2019-11-06

結論

StorageにアップロードするCSVをisonに変えたら文字化けしなくなった

前提

Storage API でファイルをアップロードする方法はこちらの公式ドキュメントを参照
https://cloud.google.com/storage/docs/uploading-objects#storage-upload-object-python

実験結果

CSVの場合

元データ

ローカルで作成したCSV(UTF-8)

storage_upload.csv
supplements,錠剤
...

結果

StorageにアップロードされたCSV

storage_upload.csv
supplements,骭蜑
...

jsonの場合

元データ

storage_upload.json
{{"name":"supplements","名前":"錠剤"},{...}}

結果

元データと同じ

storage_upload.json
{{"name":"supplements","名前":"錠剤"},{...}}

備考

writeJson.py
import json
class WriteJson:
    def __init__(self, ad_data, new_file,file_name):
        self.ad_data = ad_data
        self.new_file = new_file
        self.file_name = file_name
    def write(self):
        method = "w" if self.new_file else "a"
        f = open(self.file_name, method, encoding="utf-8")
        json.dump(self.ad_data,f,ensure_ascii=False)

→最後の行でensure_ascii=Falseとしないと出力されるデータが"\uXXXX"の形にエスケープされてしまうので注意

        json.dump(self.ad_data,f) → エスケープされてしまう

[python] JSONファイルのフォーマットを整えてDumpする

作業メモ:記事の背景

・Pythonでスクレイピングしている
→CSVをデータを BigQuery に送るループ処理を行っていると以下のエラーが出た
「10054, '既存の接続はリモート ホストに強制的に切断されました'」
→代替策としてCloud Storage へ一旦ファイルアップロードをしてみようと思った
→UTF-8でエンコードしたCSVをStorageにアップロードすると全ての日本語が文字化けした
→検索しても2019/11/06現在これといったものがヒットしない
https://stackoverflow.com/questions/45394157/google-cloud-storage-not-handling-utf-8-filenames
https://groups.google.com/forum/?hl=ja#!topic/google-app-engine-japan/0NHIIqbLx9w

jsonにする以外に良い方法をご存知の方教えてください_(..)_


何かあればお手数ですが、本記事か以下アカウントでお知らせください!

\ Follow Me! /
Qiitaアカウント
Twitterアカウント

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1