2012/08/15

STDOUTの文字コードを途中で変える(perl)

Perlの文字コード変換の話 其の六 - It_lives_vainlyの日記

コンソール使用時はcp932で、同じスクリプトを使ってmp4boxへ渡す名前だけutf8にしたいと悩んで、use encodingとかも試したのですが、「途中から変更」という目的には合わず(use encodingは最後に宣言したものが有効になる)。
で、bimode STDOUT ':raw:encoding(utf8)'というのが正解のようです。
rawを指定すると前のエンコードを無効にしてくれるとのこと。
というわけで、途中で変えたい場合、こんなコードを入れておくと便利。
if ($flg_utf8){
binmode STDOUT, ":raw:encoding(utf8)";#utf8出力
}else{
binmode STDOUT, ":raw:encoding(cp932)";#cp932
}

それとは別にtsrenameをbatの中で使えないかと悩んで、こんなページを見つけました。
TsRenameのリネーム後のファイルでバッチ処理

ふむふむとか読んでいたのですが、EpgDataBonで録って.program.txtがある場合はそのファイルを読み込めばいいか、という結論に達し、自分でスクリプトを作ることに。
・・・あれ?お休みは今日までなのに、連休中にアニメを1本も見ていない・・・

0 件のコメント:

コメントを投稿