Hatena::ブログ(Diary)

俺の成長日記 このページをアンテナに追加 RSSフィード Twitter

2011-06-03

mxmlc とか flash のログを tail すると文字化けする問題

mxmlcswfコンパイルしているときに出てくる warning や、AS で trace した文字が文字化けしちゃう問題について。

まずは mxmlc について。こいつは java をつかってコンパイルしているらしい。これがどうやら Macデフォルトでは SJIS で出力しちゃうっぽい。Mac というか、javaデフォルトかな。なんで、java を実行するときに -Dfile.encoding=UTF8 っていうオプションをつけてあげなきゃいけない。下記のURLが参考になった。

no title

詳しく手順を説明すると、mxmlc は FlexSDK の bin の中、FlashBuilder をインストールしたのなら /Applications/Adobe Flash Builder 4.0/sdks/4.1.0/bin あたりにはいってる。この mxmlc を直にいじればいいようだ。

まずはディレクトリに移動して、mxmlcvi でひらく。怖い人はバックアップをとること。

$cd /Applications/Adobe\ Flash\ Builder\ 4.0/sdks/4.1.0/bin
$vi mxmlc

んで、その中に

java $VMARGS $D32 $SETUP_SH_VMARGS -jar "$FLEX_HOME/lib/mxmlc.jar" +flexlib="$FLEX_HOME/frameworks" "$@"

とかっていう行があるので、そこに

java -Dfile.encoding=UTF8 $VMARGS $D32 $SETUP_SH_VMARGS -jar "$FLEX_HOME/lib/mxmlc.jar" +flexlib="$FLEX_HOME/frameworks" "$@"

みたいにオプションを加えるだけ。

bin フォルダに入ってるからてっきりコンパイル済みのバイナリなのかと思ってたけど、ただのスクリプトファイルなのね。




次に、trace が文字化けちゃう問題について。FlashBuilder とかで trace 見てれば問題ないのだろうけど、ターミナル文字化けるとちょっと悲惨。下記のサイトが参考になった。

OSの文字コードとlogの文字コードが異なり、tailなどで文字化ける場合の対処 - 雑想空間

nkf っていうやつがあるといいっぽい。Gmail とかをデバッガで開くと、trace とかしてないけど勝手に出力されちゃう系のログが出力されるので、それが直るか確認してみる。いつもはこんな感じでログを見る。

$tail -f ~/Library/Preferences/Macromedia/Flash\ Player/Logs/flashlog.txt
?x?? : easeOutCirc ?͊֐??ł͂???܂???
?x?? : easeOutCirc ?͊֐??ł͂???܂???
?x?? : easeOutCirc ?͊֐??ł͂???܂???
?x?? : easeOutCirc ?͊֐??ł͂???܂???
?x?? : easeOutCirc ?͊֐??ł͂???܂???
?x?? : easeOutCirc ?͊֐??ł͂???܂???
?x?? : easeOutCirc ?͊֐??ł͂???܂???
?x?? : easeOutCirc ?͊֐??ł͂???܂???
?x?? : easeOutCirc ?͊֐??ł͂???܂???
?x?? : ?x?????? 100 ?ɒB???܂???

文字化けしちゃってます。 nkfインストールしてみる

$sudo port install nkf

これで確認

$tail -f ~/Library/Preferences/Macromedia/Flash\ Player/Logs/flashlog.txt | nkf -u -w
警告 : easeOutCirc は関数ではありません
警告 : easeOutCirc は関数ではありません
警告 : easeOutCirc は関数ではありません
警告 : easeOutCirc は関数ではありません
警告 : easeOutCirc は関数ではありません
警告 : easeOutCirc は関数ではありません
警告 : easeOutCirc は関数ではありません
警告 : easeOutCirc は関数ではありません
警告 : easeOutCirc は関数ではありません
警告 : 警告制限 100 に達しました

おぉ、ちゃんと文字化けが解消されましたね。これだけだとちょっとコマンドうつのめんどくさいので、スクリプト書いてみる。

$cd /usr/bin
$sudo vi flashlog

中身はこんな感じ。さっきのコマンドを書いただけ。

#!/bin/bash
tail -f ~/Library/Preferences/Macromedia/Flash\ Player/Logs/flashlog.txt | nkf -u -w

権限がないので、実行できるように変更しておく。

$chmod 755 flashlog

これで、"flashlog" ってタイプするだけで trace が tail できるようになる。超便利。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/katsuren/20110603/1307123152
Connection: close