Shift_JIS と UTF-8 に悩まされた話

文字コードェ……

Foobar2000のプレイリストファイルは、拡張子が「.m3u8」というけったいなもの。こいつをエディタで開くと、

f:id:akashi_keirin:20191104090654j:plain

こんなふうに、登録した楽曲データのフルパスを書き込んでいるだけだった。

ただ、うっとうしいのがドライブ名がジカ書きなところ。

これでは、ドライブレターが変更になったら読み込めなくなってしまう。

で、かつて作成したTextFileクラスを利用して編集してはどうか、と考えた。

ちなみに、TextFileクラスのコードはコチラ

akashi-keirin.hatenablog.com

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というプレイリストファイルに対して実行した。

実行後

f:id:akashi_keirin:20191104090658j:plain

ぐえっ!!!!!!!!

何と、.m3u8ファイルよ、キサーマはUTF-8だったのか……orz

おわりに

再生情報を表すXMLがフツーにFileSystemObjectで編集できたので完全に油断しておりました。

なお、現在は既にUTF-8のテキストファイルを編集するためのクラス(UTF8TextFileクラス)を作成済みなので、この問題は解決済みです。

UTF8TextFileクラスについては、またコチラでご紹介する機会もあろうかと……。

PC初心者なので、ここへ来て初めて文字コードに悩まされましたw

UTF8TextFileクラスについて

コチラをどうぞ。

akashi-keirin.hatenablog.com