文字化けしたCSVを、変換サイトに上げるのをやめた日
通販モールからダウンロードした注文データのCSVを開くたびに、文字が読めなくなっていた。原因を調べて、直し方を探して、最後に手が止まった話を書く。
「繧ェ繝ャ繝ウ繧ク」という注文
ネットショップの注文データを、モールの管理画面からCSVでダウンロードして、Excelで開く。それだけの作業のはずが、開くたびに商品名の欄が「繧ェ繝ャ繝ウ繧ク」のような記号の並びになっていた。
原因はすぐに調べがついた。モールが吐き出すCSVはShift_JISという文字コードで、Excelが期待する文字コードとかみ合っていないときに起きる。名前は分かっても、直し方はいくつも出てきて、どれが正しいのか分からなかった。
変換サイトを開いて、貼り付ける直前で手が止まった
検索して出てきた「文字コード変換 無料」のサイトを開き、CSVの中身をコピーして、入力欄に貼り付けようとした。
貼る直前で、手が止まった。
——このCSVには、お客様の名前と住所と電話番号が入っている。
利用規約を読むと「アップロードされたデータは変換処理のためにサーバーに送信されます」とあった。悪意のある書き方ではない。ただ、注文者の個人情報を、名前も知らないサイトのサーバーに送ることになる。それは、越えていい線ではないと思った。
結局その日は、Excelの「データ」タブから外部データの取り込みを使い、文字コードを手動で指定する方法で開いた。うまくいく日と、うまくいかない日があった。判定の基準が自分でも分かっていなかった。
気づいたのは「判定も変換も、送らずにできる」ことだった
ある日、当たり前のことに気づいた。
文字コードの判定も、Shift_JISからUTF-8への変換も、ブラウザの中だけで完結する処理だ。ファイルを外部のサーバーに送る必要はどこにもない。
送っていたのは、変換サイトを作る側にとってその方が簡単だったからで、自分の側に必要だったからではなかった。
だから、ファイルを選ぶだけで、その場で判定して、その場で変換してダウンロードできるページを作った。
ここで書いたツールを、実際に試す
CSVの文字化けを直す実際にどう動くか
CSVファイルを選ぶと、まず数行のプレビューが表示される。日本語が正しく読めていれば判定は合っている。読めなければ、元の文字コードをShift_JISかUTF-8に切り替えて選び直せる。
| 用途 | 選ぶボタン |
|---|---|
| Excelで開きたい | 「Excel用にダウンロード」(BOM付きUTF-8) |
| 別のシステムに取り込みたい | 「BOMなしでダウンロード」(指定がUTF-8の場合が多い) |
変換したファイルは、その場でダウンロードされる。アップロードという操作自体がないので、送信するかどうかを迷う場面そのものがない。
迷ったところ:自動判定は外している
作っていていちばん悩んだのは、文字コードの自動判定の精度だった。数字とアルファベットだけのCSVは、Shift_JISかUTF-8か機械的に見分けるのが難しい場面がある。
誤判定したまま気づかずダウンロードされるより、プレビューを見て自分で選び直せる方が安全だと考え、判定はあくまで最初の候補として示し、最終的な選択は必ず人が見て決める作りにした。
作ってみて変わったこと
今は、モールからダウンロードしたCSVを開けなかったことがない。それより変わったのは、注文データを外のサイトに預けることへの引っかかりが、そもそもなくなったことだ。
よくある質問
本当にファイルは送信されないのですか?
送信されません。文字コードの判定も変換も、お使いのブラウザの中だけで行われます。ファイルを選んだ時点で通信が発生することはありません。
Shift_JIS以外の文字コードにも対応していますか?
日本語のCSVでよく使われるShift_JISとUTF-8の判定・変換に対応しています。それ以外の文字コードは対象外です。
スマートフォンでも使えますか?
使えます。ファイルアプリやダウンロードフォルダからCSVを選べば、パソコンと同じように処理できます。
関連する読みもの・ツール
同じように、自分の手作業をツールにしたものを他にも置いています
kamitoolはゲームや事務仕事の細かいツールが中心ですが、ネットショップの在庫・利益管理や、モール間のデータ移行のようなものは、noteで「TOOL BOX|手作業をツールにする」として公開しています。オフラインで動くファイル1枚の形で配っているものもあります。