UTF-8なファイル名(Windows XPの場合)
弾さんのperl - utf8なファイル名を見て、Windows XPではどうかなと思ってやってみました。
まず、最初のディレクトリの様子を示します。
C:\work\utf8> dir 2007/05/11 14:03 <DIR> . 2007/05/11 14:03 <DIR> .. 2007/05/11 13:49 321 make_utf8_fs.pl 2007/05/11 14:02 462 use_utf8_fs.pl
そして、make_utf8_fs.plを動かし、もう一度ディレクトリを見ます。
C:\work\utf8> perl make_utf8_fs.pl C:\work\utf8> dir 2007/05/11 14:03 <DIR> . 2007/05/11 14:03 <DIR> .. 2007/05/11 13:49 321 make_utf8_fs.pl 2007/05/11 14:02 462 use_utf8_fs.pl 2007/05/11 14:03 <DIR> 邨仙沁
「邨仙沁」という変なディレクトリができていますが、これは「結城」をutf8のバイト列で書いたのを、Windowsのファイルシステムで見るとこうなったのだと思います。
次にuse_utf8_fs.plを動かすと、$結城::浩::ふりがなの値が表示されています。ついでにutf8で書かれたスクリプト(make_utf8_fs.pl, use_utf8_fs.pl, 結城/浩.pm)の内容もShift_JISとして表示します。
C:\work\utf8> perl use_utf8_fs.pl ゆうきひろし -- make_utf8_fs.pl -- #!/usr/bin/perl # This script is written in utf8. use strict; use warnings; use utf8; mkdir '結城'; open my $fh, '>:utf8', '結城/浩.pm' or die $!; print $fh <DATA>; close $fh; __END__ use strict; use warnings; use utf8; { package 結城::浩; our $ふりがな = 'ゆうきひろし'; } 1; -- use_utf8_fs.pl -- #!/usr/local/bin/perl # This script is written in utf8. use strict; use warnings; use utf8; use 結城::浩; binmode STDOUT => ':encoding(Shift_JIS)'; print $結城::浩::ふりがな, "\n"; print_file('make_utf8_fs.pl'); print_file('use_utf8_fs.pl'); print_file('結城/浩.pm'); sub print_file { my ($filename) = @_; print "-- $filename --\n"; open my $fh, '<:utf8', $filename or die $!; print <$fh>; close $fh; } -- 結城/浩.pm -- use strict; use warnings; use utf8; { package 結城::浩; our $ふりがな = 'ゆうきひろし'; } 1;
メモ(はしょった説明)
- Perlのスクリプト自身をutf8で書くときには use utf8; をしておく。
- オープンするファイルがutf8のときには、open my $fh, '>:utf8', $filename とか、open my $fh, '
- 標準出力をShift_JISにするときには binmode STDOUT => ':encoding(Shift_JIS)'; とする。
参考(あとで読む)
追記:
ブログのタイトルなどはutf8ではなくutf-8と書いて欲しいところというコメントが。なるほど!直してみました。でもそれをいうなら、utf-8でもなくUTF-8ではと思ったのですが、いかがでしょう。RFC 3629 - UTF-8, a transformation format of ISO 10646
『数学ガール』の初校読み
- 2007-05-11 22:15:15 - ばんごはん食べたら睡魔に襲われて22時まで寝ていた。さっき起きて第二章を読み終えた。これから第三章にはいる。
- 2007-05-11 23:04:52 - 第三章終了。ミルカさん、かっきー。これから第四章に入る。
- 2007-05-11 23:37:47 - 第四章終了。少し休んでから第五章に入る。
- 2007-05-12 00:09:15 - 第五章半分ほど。テトラちゃん、かあいー。でももう眠くなってきた。