Shift_JIS と UTF-8 に悩まされた話
文字コードェ……
Foobar2000のプレイリストファイルは、拡張子が「.m3u8
」というけったいなもの。こいつをエディタで開くと、
こんなふうに、登録した楽曲データのフルパスを書き込んでいるだけだった。
ただ、うっとうしいのがドライブ名がジカ書きなところ。
これでは、ドライブレターが変更になったら読み込めなくなってしまう。
で、かつて作成したTextFile
クラスを利用して編集してはどうか、と考えた。
ちなみに、TextFile
クラスのコードはコチラ。
TextFileクラスを用いてプレイリストファイルを編集する
「TextFile
クラスを用いて」と言っても、TextFile
クラス自体はFileSystemObject
クラスをラップしただけのクラスなので、「FileSystemObject
を用いてプレイリストファイルを編集する」と言った方が正しいんですけどね。
リスト1 標準モジュール
Private Sub testTextFileClass() Const SAMPLE_FILE As String = _ "X:\個人用\はてなブログ用\PlayListEditor\NowPlaying" Dim txtFile As TextFile Set txtFile = New TextFile Call txtFile.init(SAMPLE_FILE & ".m3u8") With txtFile Dim i As Long For i = 1 To .LineCount Call .replaceLine(i, Replace(.Line(i), "O:\Music", "F:\Music")) Next End With End Sub
改めて見直すと、TextFile
クラスのメソッド名、プロパティ名の付け方がイマイチやなあ……。
ま、それはさておき、自作TextFile
クラスのreplaceLine
メソッドに、各行のテキストを渡し、組み込みのReplace
関数で「O:\Music
」を「F:\Music
」に置換してファイルに書き込み直している。
んで、こいつをNowPlaying.m3u8
というプレイリストファイルに対して実行した。
実行後
ぐえっ!!!!!!!!
何と、.m3u8
ファイルよ、キサーマはUTF-8
だったのか……orz
おわりに
再生情報を表すXMLがフツーにFileSystemObject
で編集できたので完全に油断しておりました。
なお、現在は既にUTF-8
のテキストファイルを編集するためのクラス(UTF8TextFile
クラス)を作成済みなので、この問題は解決済みです。
UTF8TextFile
クラスについては、またコチラでご紹介する機会もあろうかと……。
PC初心者なので、ここへ来て初めて文字コードに悩まされましたw
UTF8TextFileクラスについて
コチラをどうぞ。