Excelで開くためのCSVファイルに機種依存文字を入れる方法

こんにちは東京Kです。

システムの開発では「CSVファイル出力機能」と言う要望はかなりあります。

しかし、うっかりするとCSVファイルの出力は、日本語しか使えない文字コードであるShiftJISで作ってしまい、中国文字や機種依存文字などを扱うことが出来ないシステムが出来てしまいます。

またShiftJISだと、絵文字や、珍しい人名漢字も結構使えません。

かといって、世界中の文字を表すことが出来る文字コードであるUNICODE(例えばUTF-8)のCSVファイルを作ったとしても、CSVダブルクリックでExcelが起動すると文字化けします。

では、どうすればいいか?

実は意外と簡単で「BOM」を付ければ良いです。

BOMとはByte Order Markの略で、その昔エンディアンが云々・・・

と言う細かい話は置いておいて、かなり雑な説明をすると、UNICODEと一口に言っても数種類あり、それを区別するための情報をファイルの先頭に付けることが出来ます。その情報がBOMです。

日本語のExcelは、BOM無しCSVファイルはShiftJISとして読み込もうとしますが、BOM付きファイルであれば、BOMに従って文字コードを決定してファイルを開きます。

そのため、CSVファイル出力機能を実装する際にBOM付きのUNICODEファイルを生成するようにすると良いです。

一般的にはBOM付きのUTF-8のファイルを作ることになると思いますので、UTF-8のファイルを出力する際に、ファイルの先頭に「0xEF 0xBB 0xBF」の3バイトを付加すればOKです。

先頭の0が消えないCSVファイルの作り方

東京kです。こんにちは。
なんか、このBlogが食べ物の話題だらけになっていると聞きつけて、久しぶりに投稿です。
とはいえ、すぐに出てくるネタが無いので、割と知っている人は知っている的な技術話題を。

業務でCSVファイルってよく使いますよね?
でもよくある話しの一つとして『「0123」等の値がExcelで開いても「123」になってしまう。』問題があります。
今回はそれを解決するお話し。

この問題のアプローチは2つあります。

  • ファイルを開くときに対処するか
  • ファイルを作るときに対処するか

です。今回は後者で、普通に開いても0が消えないCSVの作り方です。
“先頭の0が消えないCSVファイルの作り方” の続きを読む