不思議な仕様

その、Windowsのユーザー向けに、あれこれ、新作ソフトを仕込んでいます。ExcelにCSVで作ったデータを渡そうとして、CSVのカンマテキスト書類を作り、Excelで開こうとすると文字化けするんですよね。インポートからやると、UTF-8はインポートはできるけど、CSVが改行があると、インポート不可で、出来たCSVの書類をダブルクリックで直接開くと、文字化け。

 なんとかならんか!とあれこれ調べると、BOMコード付きのUTF-8に変換すると、ダブルクリックで文字化けせずに開けました。試しでCotEditorというソフトで、UTF-8のBOM付きで変換すると開けたので、さて、どうやって、Xojoでやれるのか?と思い、Xojoのフォーラムで探したら、ありました!、ちゃんとコードも発言にありました。(フォーラムの発言読んでで解決することの方が多いです)

 で、どういう風にやるかというと、TextOutputStreamを使って、テキスト書き出す時に最初の行に、

 

theS.Write(encodings.UTF8.Chr(&hFEFF))

 

って追加するだけですみました。theSはTextOutputStreamですね。この&hFEFFとううのが、BOMなんでしょうね。これで、ビルドしてCSVで書き出して、めでたく、Office 365のバージョンのExcelでは開けました。でも、古い、Excelの2011のMac版では、だめですね。UTFの規格がちがうみたい。

 そもそも、マック版のExcelなら、BOMじゃないUTF-8も対応すべきでですね。Numbersや、LibreOfficeではBOMじゃないUTF-8で普通に開けます。

 開発してると知識増えるのはいいのですが、マイクロソフトのソフトのまずさはそこらへんの細部のつめが甘いところだと思いました。こんなの直すの簡単なはずじゃないかなと思います。

 今、パソコンを買おうと思っている方は、Apple製品を選んだほうが、いいかも。Windowsも使えますからね。