Hachioji.pm 日めくりテックトーク

PerlにおけるBOM付utf8の扱い

ごくごくたまに遭遇するファイルの文字コード扱いでうざいのが、まさに爆弾のBOM付utf8ですが、今日はこいつPerlでいい感じに扱うモジュールの紹介です。

そもそもBOM付UTF8とは

BOMとは文字コードの識別用のファイルの先頭につく文字列で、Byte Order Markの略らしいです。

Windowsのメモ帳で保存したファイルとかなんだかよくわからないシステムが吐き出すファイルとかについてきます。

UTF8でBOMつけるメリットはよく知りません。ぼくの知識はそんなもんです。

File::BOMが便利

でPerlでよろしくやる方法なんですが、File::BOMってモジュールを使います。

#!/usr/bin/env perl
use File::BOM;
open my $fh, "< :encoding(utf8):via(File::BOM)", "hogehoge.csv"
    or die "OutPutByExcel.csv: $!";

で、こんな感じです。open関数の第三引数とかに「:via(File::BOM)」を加えればいいんですね。そもそも、ぼくはopen関数の第三引数の意味あまりわかっていないので、「つなげられるんだ!」ということに驚きました。

終わりに

実は、このネタ7月のTakao.mt 2013の夜の飲み会wで相談したら、ytnobodyさんとxtetsujiさんにもろもろアドバイスもらって、これでいいんだって安心したというhachiojipm++な小ネタなのでした。

created by
Hiroyuki Akabane
created at
last modified at
2013-12-14 00:05
comments powered by Disqus