こんにちは、921です。
データローダーでCSVを取り込もうとしたら文字化けしたことはありませんか?

どうして文字化けしてしまうのか、いろいろ試して調べてみました。
原因
どうやら、
①CSVの文字コード
②CSV内の全角文字の有無
③データローダの設定(Zulu 18以上を使用するとあまり関係がない)
このあたりの設定が関わっていそうです。
具体的には、以下の表のような結果となりました。
どういうことか、順に説明します。
①文字コード
文字コードとは何でしょうか。以下の説明をご覧ください(Wikipediaより引用)
文字コードは、文字や記号やそれに類するものを、通信やコンピュータで扱うために、各文字や記号などに対して番号を与えた対応規則の体系である。通常、通し番号を与え、文字と番号の対応表が作成される。どの文字コードを使うか決まっている状況では、ある数(番号)が与えられるとそれに対応する文字や記号を特定することができる。
要するに、各文字に固有の数字を割り振って便利にしたものが文字コードです。
UTF-8やSJISが有名です。
②全角文字
皆さんご存じのように、コンピュータが扱う文字には「漢」「あ」のような全角文字と、「A」のような半角文字があります。 全角文字の有無も文字化けするかどうかに関わってきます。
③データローダの設定
データローダでsetting(設定)のタブを押すと画像のようなウィンドウが表示されます。

赤枠で囲った部分に何か書いてありますね。
「Read all CSVs with UTF-8 encoding」
これは、UTF-8エンコーディングを用いてCSVを読み込むというような意味です。
UTF-8としてCSVを読むように設定しているのに、実際に取り込んだCSVがSJISだったらおかしいですよね。
文字化けしたらどうすればいいのか?
Zulu 17以下を使用している場合
まずはCSVの文字コード設定とデータローダの文字コード設定がかみ合っているか確認してください!
取り込もうとしているCSVファイルの文字コードがわからない!
という場合は以下の方法で確認してください。
①メモ帳やエディタで作成した場合
メモ帳の画面右下を見てみると・・・

赤丸で囲った右下の部分に「ANSI」と書いてありますね。(SJISと同じ意味です)

サクラエディタでも同様に右下に表示されます。
②Excelで作成されたCSVの場合
自分で作成したCSVの場合、形式を「CSV UTF-8(コンマ区切り)(.csv)」または「CSV UTF-8(コンマ区切り)(.csv)」のどちらかに設定したと思います。
この場合、前者がUTF-8、後者がSJISで保存されています。
「どっちで設定したか覚えてない!」「自分で作ったCSVじゃないから知らない!」というときはエクスプローラーでファイルを選択し、「プログラムから開く」を押し、メモ帳やエディタから開くことで確認しましょう。
とにかく、UTF-8のCSVを使うときはチェックを入れて、SJISの時は外しておけば間違いなさそうです。
また、調べたところSalesforce公式が案内を出していました。
ここでも文字コードに関して同様の説明をしているほか、 「データローダの設定で [Use Bulk API] をオフとする」ことで解決する場合があることが示されています。
Zulu 18以上を使用している場合
データローダはコマンドラインでも実行できますが、SJISを取り込むと文字化けが発生することがあります。
その原因は、おそらくZulu18を使用していることかもしれません。
Zuluがver18以上だと文字コードがUTF-8で固定化されてしまうため、CSVの文字コードがSJISだと文字化けを起こしてしまうそうなのです。
SJIS 文字コードで CSV ファイルを保存した場合、内容によって以下の 2つのパターンが確認されています。
・パターン①:CSV内に全角文字を含まない場合
文字コードを SJIS で保存していても、自動的にUTF-8に変換されます。そのため、文字化けが発生しない。
・パターン②:CSV内に全角文字を含む場合
文字コードは SJIS のまま保持されます。その状態でデータローダーを実行すると 文字化けが発生する
対策:全角文字含む場合はSJIS を使用しないで、CSV の文字コードを UTF-8 に統一することで回避できます。
CSVをUTF-8に変えるのが手っ取り早そうですが、SJISのまま取り込みたい場合は以下の記事を参考にしてみましょう!
sfblog.markhammer.net この記事によると、dataloader.batファイルのjavaから始まる行のコードにコマンドとパラメータを追記することで解決するそうです。
まとめ
文字化けを防ぐ方法についてここまでご紹介してきました。
大抵の場合文字コードにその原因があるはずですので、慌てず対処しましょう。
それでは、さようなら。















