Webサービス(SaaS)からダウンロードしたCSVファイルが文字化けしている問題の解決方法、そして何故この問いが発生し続けるのか問題
要約
Q. SaaSから一括ダウンロードしたCSVファイルをExcelで開くと文字化けしていて読めません。何とかしてください!バグですか?
A. 文字コードの問題です。お手持ちの環境で文字コードを正しく指定or変換すればちゃんと読めます。あとバグって言うな。
解決方法(概要)
手元のテキストエディタでエンコーディングしろ。
この質問や当記事を書く背景
みなさん、SaaSしていますか?(セコムしてますか?の長嶋茂雄調で)
多くのWebサービス、とりわけSaaSでは管理コンソールから指定したデータを一括ダウンロードする機能が提供されていることが多いです。顧客リスト、請求データ一式、住所リスト…など。B2B、B2Cのサービス問わず提供される機能です。ここで頻発するのが冒頭の質問。
SaaSから一括ダウンロードしたCSVファイルをExcelで開くと文字化けしていて読めません。何とかしてください!バグですか?
Webアプリケーションの開発を経験したことがある人なら (#^ω^)ピキピキ だと思います。ワシも若い頃にはビジネス/プライベート問わずWebアプリケーション開発していたのう…(遠い目)。というくらいWeb開発周りでは頻発した問題。最近は知らん。
こんなの一発で直せるでしょうと思うのですが、意外と知らない人多いという悲しい事実が判明したので、情報共有のために記事を書く次第。年末年始暇なんすねというツッコミは認めない。
前提
- SaaSからダウンロードしたCSVファイルをExcelで開くと、日本語部分(正確にはマルチバイト)が文字化けして視認できない
- 2023年12月末現在、最新のWindowsとOfficeのメジャーバージョン、Windows 11とか(ただし本質的な問題はWindowsのバージョンやOSは問わないので適宜読み替えてください)
- テキストエディタとしてWindows標準のメモ帳アプリで例示する(別のテキストエディタでもだいたいできるので、適宜読み替えてください)
解決方法(詳細)
ほぼ以下のリンクに書いてあることの整理です。参考とさせて頂きました、ありがとうございます。とてもよくまとまっています。
Excelで文字化けさせずにCSVファイルを開く方法 | パソコン工房 NEXMAG
やることをまとめると以下。
- 文字化けしているCSVファイルをメモ帳で開く。
- 日本語で視認できることを確認する。
- 「名前をつけて保存」する。この時、CSV形式ではなくtxtでテキスト形式で保存する。
- 当該ファイルをExcelで開く。テキストファイルをExcelで開く方法の解説は他に譲る。
- 当該ファイルを開く際の文字エンコードを指定する。Windows環境で文字化けしているならANSIで済むと思うが、環境によっては適当にUTF-8 なども試す。
- 「カンマやタブなどの区切り文字によってフィールドごとに区切られたデータ」とし、次の区切り文字で「カンマ」を選択し、保存する。
- 当該ファイルをExcelで開く。テキストファイルをExcelで開く方法の解説は他に譲る。
- やった! 文字化けせずに日本語が読めたぞ!を確認してCSV形式で保存する。
原因
本質的には、管理コンソールを閲覧するWebブラウジングの環境と、手元要するにPCで開くExcelなどのアプリケーションの文字コードの違いの問題です。もう少し言うとデータベースの文字コードも気になりますが、議論すると最新のデータベース事情も加味しないといけないので略。
遠因としては、最近(っていつだよ10年くらい?)で各種アプリも文字コードというかエンコーディングの解釈を自動化するようになって、この辺りの文字化けが分かりにくくなったというのがあるでしょうか。そりゃ普段生活している時に文字コード意識しないですよね(たまにエンコーディング読める人いるけど、モールス信号みたいなノリだろうか)。
さらにはWindowsデフォルトだとCSVファイルをExcelで開く問題。Excelファイル(.xlsx/xls)とCSVファイル(.csv)は違います。CSVはテキストだろJK。
問題の切り分けに大事な確認事項&Tips
- その文字化け、SaaSの管理コンソールでも起きていますか?登録情報は正しいですか?
- 確認したOSやExcelやバージョンは?
- 文字化けしたというファイル、Excelとかで加工してませんか?
最後大事です。文字化けしたファイルに「ここ文字化けしてるけど、どうしましょうか」みたいなメモを追記したExcelファイル最悪です。最悪オブザイヤー2023。ファイルのエンコーディングをファイル単位で複数使えるんだっけ。無理。
なので、当該事項に関する質問をもらったら、「SaaSからエクスポートしたCSVファイルをそのままよこせ、Excelとかで開くな、そのままよこせ」 が正解です。加工したら(自粛)くらいの勢いでいいです。
バグって言うな
こういった問題をバグって言う人はどうなのかな。バグって単語が一般化して久しく経つけど、バグっていうのは本来ソフトウェアとしての誤作動で、更にはコード(広義には設定も指す)レベルの修正が必要な案件です。その意味で本題はどっちかというとおま環案件に近いかなと。SaaSベンダーやアプリケーションエンジニアの視点からすると、修正が必要とか瑕疵担保責任の問題になりかねない。
何が言いたいかというと、用語は正確に使いましょう。特にベンダーに問い合わせる時など。「言葉は大事に使おう、ユリアン」ってヤン提督も言っていたはず。コミュニケーションの労力って現代の仕事量の何割かを占めているはずなので、この辺り減らそうよ。
Discussion