ZOOMで会議や講義、研修などを行うことが多くなるにつれてGoogleフォームを利用する機会が増えてきました。ところが、Googleフォームの回答結果をCSVファイルでダウンロードしてExcelで編集しようとすると、文字化けしているんですよね。メモ帳やExcelで開いてみると、以下のように完全に文字化けしています。
この記事では文字コードを変更して文字化けを防ぐ方法を丁寧に解説します。
目次
CSVファイル文字化けの原因
文字化けの原因は文字コードがUTF-8という文字コードだからです。メモ帳やExcelで文字化けしないためにはUTF-8をShift-JISという文字コードに変換する必要があります。
1つのCSVファイルの文字コードを変えるのは簡単!
1つのCSVファイルの文字コードを変えるのは簡単です。CSVファイルをメモ帳で開き、文字コードをANSIに変えるだけです。
ここで、「ANSI?Shift-JISじゃないの?」という疑問はもっともです。
WindowsPCではANSI=CP932=Shift-JISと解釈する
厳密には違うのですが、WindowsPCではANSI=CP932=Shift-JISと考えておけば問題ありません。CP932はどこで使うかというと、実はPythonでCSVファイルの変換を行う際にはCP932を使います。
Pythonで複数のCSVファイルの文字コードをUTF-8からShift-JISに一括変換!
まず、準備としてカレントディレクトリ(現在のフォルダ)にディレクトリを2つ準備します。わかりやすくディレクトリ名を「UTF-8」「Shift-JIS」とでもしましょう。そして、ここがポイントなのですが、両方のディレクトリに文字化けしているCSVファイルを入れておきます。以下のコードのようにすれば、CSVファイルが何個でも問題ありません。今回は以下のように一気に16個のCSVファイルを変換します。
同名のファイルが「UTF-8」「Shift-JIS」というディレクトリに入っています。
それではコードを示します。手順としては、「UTF-8」ディレクトリ内のファイルを読み取り、「Shift-JIS」ディレクトリ内の同名ファイルに書き込んだうえで文字コードをShift-JISに変換します。これをfor文でファイル数分繰り返します。
#必要なモジュールをインポート import glob from pathlib import Path #UTF-8、Shift-JISディレクトリへのパス path_u = Path("./UTF-8") path_s= Path("./Shift-JIS") #それぞれのディレクトリで「.csv」が入っている名前のファイルを取得 ufiles = list (path_u.glob("*.csv")) sfiles = list (path_s.glob("*.csv")) #UTF-8とShift-JISフォルダの同名ファイルを辞書形式のペアデータとする files_dict = dict(zip(ufiles,sfiles)) #UTF-8ディレクトリ内のCSVファイルの中身をShift-JISディレクトリ内の同名ファイルに書き込み変換。 #複数ファイルにも対応するようにfor文で書く。cp932=Shift-JIS。replaceはエラーとなった文字を?に置き換え。 for ufile,sfile in files_dict.items():#.items()は辞書形式のデータでfor文をまわす際によく利用します。 with open(ufile, encoding='utf-8',errors='replace') as fin: with open(sfile, 'w', encoding='cp932',errors='replace') as fout: fout.write(fin.read())
このコードを実行すると一気に16個のCSVファイルがShit-JISに変換されました。Shift-JISディレクトリ内のファイルをExcelで開いてみましょう。
やりましたね!文字化けが一気に解決されました。
ということで、今回はCSVファイルの文字コードをUTF-8からShift-JISに変換する方法を紹介しました。ここまでを読んでいただきありがとうございました!