結論
StorageにアップロードするCSVをisonに変えたら文字化けしなくなった
前提
Storage API でファイルをアップロードする方法はこちらの公式ドキュメントを参照
https://cloud.google.com/storage/docs/uploading-objects#storage-upload-object-python
実験結果
CSVの場合
元データ
ローカルで作成したCSV(UTF-8)
supplements,錠剤
...
結果
StorageにアップロードされたCSV
supplements,骭蜑
...
jsonの場合
元データ
{{"name":"supplements","名前":"錠剤"},{...}}
結果
元データと同じ
{{"name":"supplements","名前":"錠剤"},{...}}
備考
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アカウント