日本語混じりのプレイリスト対応

順調に進んできたiTunesのWebインタフェースであるが、非常に基本的なバグに遭遇してしまった。
今の作りでは、選択したプレイリストの曲一覧を表で表示しているのだが、今まではプレイリストが英数字だけだったので問題はなかった。
しかし、日本語のプレイリストになったとたんに全く表示されなくなってしまったのだ。画面上部の現在のプレイリストの名称や、左側のプレイリスト一覧の日本語は問題ない。問題なのはそのプレイリストの内容が取得できないことなのだ。
理由はすぐにわかった。プレイリストはGETパラメータで直接日本語で入力される。いいか悪いかは別にして、原著が洋書なのだからそんな対応しているわけがないのだ。
少し調べてCPANにEncodeというモジュールがあることがわかった。しかし、使い方がよくわからない。グーグル先生に何度か聞いて、それらしい使用例をコピーし、エンコードの種類をいくつか変えて試行錯誤したところうまくいった。
$playlist = encode(‘sjis’, decode(‘utf-8’, $playlist));
$playlist = $self->_escape_quotes($playlist);
元になっている$playlistという変数は、元々GETのパラメータで、別のところでparam()で取得しているものだ。
基本はUTF-8でスクリプトを作っているので、decodeの食わせるのはUTF-8で納得か?というところなのだが、最終的な文字列は、AppleScriptに読み込ませるところなのだ。UnicodeではなくSJISというところがなんとも。Appleも昔の資産大事なのか、と思ってしまった。
解決したのでよしとする。
そろそろ、普通のアプリケーション作り始めるかな。

コメント