文字化けしたCSVを、変換サイトに上げるのをやめた日

kamitool 運営者・個人開発の記録

通販モールからダウンロードした注文データのCSVを開くたびに、文字が読めなくなっていた。原因を調べて、直し方を探して、最後に手が止まった話を書く。

木目のデスクの上でノートパソコンの画面に文字化けした表が表示されている。周りにダウンロードされた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枚の形で配っているものもあります。