追記有り]Rubyの``やsystemで外部コマンド実行するときに、実行ファイル自体や引数にUTF-8文字(SJISマッピング無し)が渡せないのであれこれ悩んだ問題。Ruby1.9.3p0(ActiveScriptRuby)前提。WindowsはファイルシステムがNTFSならUTF-8ファイル名を命名できる。内部コードもUTF-8になっている(はず)。古いAPIを触ったり、INPUT/OUTPUT周りを見るとまだShiftJIS(Windows-31J)が多い。このズレは厄介で、ハマりどころのA代表。Rubyの場合、UNIX寄りでWindows特有処理のケアはやっぱり甘い...閑話休題。Windows&UTF-8の扱いが比較的良くなっているRuby1.9系(Dir.globの引数に.encode('utf-8')などでUTF-8文字列を渡すとUTF-8ファイル名が取れる)でも、マジックコメント入れてUTF-8保存しただけだと外部実行が出来ない。-*-`utf8_filename`どうにも通らない。SJISマッピング出来るファイルなら、SJISでやればいいだけの話なのだがUTF-8にあってSJISにない文字(U+2661(はーと)とか)が混ざってると動かない。やってみたのだが、結論から言うと綺麗に書くのは諦めた。調べるべきなのだが(やってない)、どうもRubyが叩いてるAPI自体が古いんじゃないかという。Overflowなので、苦肉の策。バッチファイルを作成して、それを実行する。`tmp.bat`Windowsのバッチ実行ではコードページが合えば、UTF-8ファイル名も通るのでそれを利用する。引数にファイル名を指定するときも同様。\\の数とかダブルクオート囲いとか先頭に./が必要な場合は適切にすること。うーん、汚すぎて死にそう。Qiitasystemuは知らなかった。追記]やはりきれいには書けていないが、さすがにbatを吐き出すのは汚すぎるということで苦肉の策第二段。今回はnyagosを使用している。65001したあとにUTF-8を流し込めない。ここらへんは、chcp後に貼り付けが出来るかどうかで確認する。APIを直接叩けば済むような問題に見えるんだよなあ。午後0時43分ご紹介ありがとうございます。65001」はなくても大丈夫だと思います。Linux)の管理他での備忘録です。