CSV の文字コード・区切り文字・改行・ダブルクォートの扱い(受け渡し前に決めておくこと)
ロボットが読み書きする CSV で起きやすい文字化けや列ずれの原因を、文字コード(Shift_JIS・UTF-8・BOM)、区切り文字、改行、ダブルクォートの観点で整理し、受け渡し前に決めておく項目をまとめます。
CSV は「ただのテキスト」だからこそ揉める
架空の例として、基幹システムからダウンロードした売上 CSV をロボットが読み込み、加工して別のシステム用の取り込み CSV を作る業務を考えます。テストでは問題なかったのに、本番で「顧客名が文字化けする」「ある行から列が1つずれる」「Excel で開くと先頭の列名がおかしい」といった問題が起きることがあります。
CSV は単純な形式に見えますが、文字コードや区切り、改行の扱いには何通りもの流儀があります。作る側と読む側で流儀がそろっていないと、こうした問題が起きます。
文字コードの違い
日本の業務でよく使われる文字コードは、主に次の2つです。
- Shift_JIS(Windows では CP932 と呼ばれる拡張版が使われることが多い):古くからの業務システムや、Excel で保存した CSV で多い。一部の旧字体や環境依存の文字は表せない、または環境によって扱いが違う
- UTF-8:新しい Web システムやクラウドサービスで多い。ほぼすべての文字を扱える
- UTF-8 の BOM:ファイルの先頭に付く目印。Excel で UTF-8 の CSV を文字化けせずに開くために必要なことがある一方、BOM があると先頭の列名が正しく読めないシステムもある
区切り文字・改行・ダブルクォート
文字コードのほかにも、ファイルの細かな決まりごとで問題が起きます。
- 区切り文字:カンマが一般的だが、タブ区切りのファイルを「CSV」と呼んでいる場合もある
- 値の中のカンマ:住所や金額(1,000)にカンマが含まれると、列がずれる。ダブルクォートで値を囲むのが一般的
- 値の中のダブルクォート:囲みの中に「"」を書くときは2つ重ねる、という決まりが一般的
- 改行コード:Windows 系は CRLF、それ以外では LF が多い。取り込み側が片方しか受け付けないことがある
- セル内の改行:備考欄などに改行が含まれると、1件が複数行に分かれて見える。囲みで正しく扱えるかを確認する
受け渡しの前に決めておくこと
ロボットが CSV を受け取る・渡す場合は、相手のシステムや担当者と次の項目を取り決め、仕様書に書いておきます。「普通の CSV で」という口約束が、後のトラブルの元になります。
- 文字コード(Shift_JIS か UTF-8 か、BOM の有無)
- 区切り文字と、値をダブルクォートで囲むかどうか(全項目か、必要なときだけか)
- 改行コード(CRLF か LF か)と、最終行の後に改行を入れるか
- 見出し行の有無と、列の順番・列名
- 日付・金額の書式(2026/10/07 か 20261007 か、カンマの有無)
- ファイル名の付け方と、0件のときにファイルを作るかどうか
よくある失敗
CSV まわりで実際によく起きる失敗です。
- ロボットが作った CSV を人が Excel で開いて保存し直し、前ゼロが消えたり日付の形式が変わったりする
- UTF-8 で出力したら、取り込み側のシステムが Shift_JIS しか受け付けなかった
- テストデータに環境依存の文字やカンマ入りの住所がなく、本番で初めて問題が出る
- BOM 付きのファイルを読み込み、1列目の列名が一致せずに列が見つからない
テストデータに「嫌なデータ」を入れる
受け渡しの CSV をテストするときは、カンマを含む住所、ダブルクォートを含む商品名、改行を含む備考、旧字体の氏名、先頭がゼロのコードなど、わざと扱いにくい値を混ぜたデータを用意します。この数行が正しく往復できれば、本番での多くの問題を事前に防げます。
※BizRobo! は RPA テクノロジーズ株式会社の製品です。本サイトは同社とは関係のない個人の解説サイトです。画面や機能の名称は、製品のバージョンによって異なる場合があります。
ほかの記事
BizRobo!の基本BizRobo! の構成を理解する(Design Studio・Management Console・RoboServer の役割)BizRobo! を使い始めるときに最初に混乱しやすい、Design Studio・Management Console・RoboServer の役割分担と、ロボットが作られてから実行されるまでの流れを整理します。BizRobo!の基本ロボット開発の進め方(業務の洗い出しから手順書・分割まで)いきなり Design Studio を開くのではなく、業務の手順を書き出し、例外を洗い出し、ロボットを小さく分けてから作る進め方を解説します。手戻りを減らすための準備の型です。BizRobo!の基本タイプと変数の考え方(データ設計でロボットを読みやすくする)BizRobo! の変数とタイプ(.type ファイル)の関係、グローバル変数の使いどころ、変数名の付け方など、ロボットのデータ設計の基本を解説します。BizRobo!の基本DS と DA の使い分け(Web 操作とデスクトップアプリ操作)BizRobo! で Web システムを操作する DS ロボットと、デスクトップアプリを操作する DA(Desktop Automation)の違い、それぞれが向いている業務、組み合わせるときの注意点を解説します。