昨日作ったID3v1にタグ領域の16進ダンプ表示機能を追加した。これで文字列の末尾にマルチバイト文字の1バイト目があるか確認しやすくなった。しかし、これ見て思うのはUTF-8って1バイト文字以外は1文字3バイトも食うんだな…。1項目最大30文字しか入らないID3v1タグだと漢字10文字なので、最初にUTF-8で入れること自体に問題あるかも。
てな訳でmp3ファイルの変換元であるm4aファイルのタグをAtomicParsleyで読み出してnkfでシフトJISに変換したものをid3v1でID3v1タグとして書き込めるようにしてみた。「AtomicParsley sample.m4a -t | nkf -s | id3v1 -w sample.mp3」ってなカンジに実行する。
と、ここまできて今度は波ダッシュ問題にぶちあたる。Radikoの番組表に波ダッシュ等のシフトJISで表せない文字が含まれているようでRadikaで録音したm4aのタグにこれが入るとmp3infp等で文字化けするし、ファイル名に入るとmp3infpやffmpeg等でファイルが認識できなかったり、NASに置けなかったりする。
UTF-8で言えば波ダッシュが「0xe3 0x80 0x9c」、チルダ(〜)が「0xef 0xbd 0x9e」。nkfでシフトJISに変換すると波ダッシュはチルダに置き換えられたので、この辺を上手く使ってタグやファイル名を置き換えてみよう。
とりあえず、ファイル名に含まれる波ダッシュ等のシフトJISに無い文字を「〜」に置き換えてリネームするバッチファイルを作ってみた。残念ながら波ダッシュ以外でも「〜」になってしまうが、もうそれはこの際しょうがない。
2011/03/11追記:何か色々ミスってたのでバッチファイルを訂正。
FOR %%J IN (*.*) DO CALL :MAIN "%%~J" EXIT /B :MAIN FOR /F "usebackq delims=" %%I IN (`ECHO "%~n1"`) DO SET SN=%%~I FOR /F "usebackq delims=" %%I IN (`ECHO "%~x1"`) DO SET SX=%%~I SET DN=%SN:?=〜% SET DX=%SX:?=〜% IF NOT "%SN%%SX%"=="%DN%%DX%" REN "%~1" "%DN%%DX%" EXIT /B
定時後は延々とUTF-8絡みで格闘。TAKEも何かMP3のタグがDLNAサーバでおかしくなる特定のデータとかで苦しんでた模様。晩御飯食うべくお出かけ。TAKEが間に合うならコーナンってことで垂水んとこへ。何とか閉店9時の5分前くらいに到着。無事A3のラミネートフィルム査収した模様。晩御飯食うついでに星陵台のマックスバリュへ。しかし、先日切れたブラックブラックのボトルはちと高めで、探してるミニッツメイドのグーニューは見つからず。とりあえず、明日の未読に備えてお菓子やドリンクを適当に査収。
晩御飯は星陵台のサイゼリヤへ。久々にミラノ風ドリアとカルボナーラとマルゲリータピザ。
ガス欠だったので2号線沿いのessoへ。speedpassで給油。リッター133円。
TAKEを送った後、セブンイレブンやサークルK寄ってグーニュー探すも見つからず。DEEN宅に帰還。
半額のグーニューを楽天で見つけたので思わず注文。いちご飲んだことないけど、2種類セットだし、もういいや(笑)
コカ・コーラ ミニッツメイド グーニューストロベリー味 280mlPET×24本
- 出版社/メーカー: コカ・コーラ
- メディア: 食品&飲料
- クリック: 5回
- この商品を含むブログ (2件) を見る
おまかせ映像の順番は、おまかせ→あざやか→標準→映画→テレビプロ→映画プロ1→映画プロ2→ゲーム→PCファイン→メモリー→おまかせ(以下繰り返し)。