概要
WINDOWS10でOUTLOOKを使っていて、メールの本文をVBAでテキストファイルに保存後、Perlで処理しようとするときにテキストファイルのエンコードがUTF16でうまく処理できない。
VBAでテキストファイルに保存するときに、エンコードをSJISにすることで解決した。
コード
Set FSO = CreateObject("Scripting.FileSystemObject") With FSO.CreateTextFile(FileName, True, False) .WriteLine objItem.Body .Close End With
の
CreateTextFile(FileName, True, False)
の引数の3番目のFalseを与える、そうするとテキストファイルがSJISで保存される。
引用
unicode省略可能です。
Unicode ファイルと ASCII ファイルのどちらを作成するかを示すブール値を指定します。Unicode ファイルを作成する場合は真 (true) を、ASCII ファイルを作成する場合は偽 (false) を指定します。省略した場合は、ASCII ファイルが作成されます。
MSDNのCreateTextFileメソッドのページ
https://msdn.microsoft.com/ja-jp/library/cc428022.aspx?f=255&MSPPError=-2147217396
感想
perlでUTF16を読めればいいだろうと思ったのだが、面倒くさそうだった。
Windowsでperl使うと、SJISとかUTF16とか本題以外のところでひっかかる、俺がやりたいのは「メール本文の集計で、エンコードじゃねーんだよ」って思ったりします。英語圏の方だとこういう問題がないから進捗もすこぶる早いのかな?と思いました。
英数字データだけって、なんかTシャツ1枚的な身軽さを感じますよね。
よくもわるくもコンピュータってアメリカ育ち!!