Bulknews::Subtech RSSフィード

2007/05/13 (日)

USING_WIDE 15:33  USING_WIDE - Bulknews::Subtech を含むブックマーク はてなブックマーク -  USING_WIDE - Bulknews::Subtech

ちょっとだけソース見てみた - Charsbar::Note

というわけで USING_WIDE でググったらそのものずばりがでてきた。

フラグがついていようといまいと、IO layer には char* がわたってこないからそれを判別できないと。USING_WIDE をすれば全部 wopen になるけど既存の cp932 で(日本語の場合。その他の言語ならそのロケールで)開こうとするプログラムがこける。workaroundは現状 Win32API::File (5.10 で core)ってことかな。(当然transparentではない)

Unicode ファイル名のアレ 01:54  Unicode ファイル名のアレ - Bulknews::Subtech を含むブックマーク はてなブックマーク -  Unicode ファイル名のアレ - Bulknews::Subtech

まあどっちもどっちだなという気もするんですが、

ActivePerl で日本語を含む Unicodeファイル名に問題があるのは事実だとおもう。

cp932 で全部が閉じてればまだマシですが、itunes-rss-server のコードなんかを見てもらうとわかるように、日本語版 Windows の場合、ファイル名は cp932 でエンコードされているのが基本のくせに、Unicode版の wopen の方を使うと cp932 以外の文字列も含んだファイルをつくることできる。

たとえば iTunes でラテン文字を含むアーティスト(Michael Bubleとか)を購入したり、BT で台湾方面からダウンロードしたりすると、cp932 には入りきらない Unicode なファイル名(フォルダも含む)が簡単にできますが、ActivePerl からは決してアクセスできない。opendir でファイル名リストをとってきて、open するという単純なことすらできなくなる。

というわけでまあよくわからんけど、自動でencodeするとかwarningを出すとか以前に、引数が UTF-8フラグつきであればUnicode版のwopen を使えば解決する話だとおもってるんだけど、どうなのかなぁ。まあ文句を言う先があるとすればp5pとActiveStateで、日本語でBlogにごちゃごちゃ書いても何の意味もないですね。自分も含めて(自戒メソッド)

http://www.google.com/search?num=50&hl=en&q=active+perl+%22unicode+filename%22