1

変換方法 (例):

Señor Coconut Y Su Conjunto - はじめに

に:

Señor Coconut Y Su Conjunto - はじめに

m3u プレイリストを作成するアプリを持っていますが、トラックのファイル名、アーティスト、またはタイトルに非 ASCII 文字が含まれていると、音楽プレーヤーが正しく読み取れないため、トラックが再生されません。

トラックを次のように書き出すと、次のことがわかりました。

#EXTINFUTF8:76,Señor Coconut Y Su Conjunto - Introducciõn
#EXTINF:76,Señor Coconut Y Su Conjunto - Introducciõn
#UTF8:01-Introducciõn.mp3
01-Introducciõn.mp3

その後、音楽プレーヤーはそれを正しく読み取り、トラックを再生します。

私の問題は、変換を適切に行うために必要な情報が見つからないことです。

私は次のことを試しました:

    byte[] byteArray = Encoding.UTF8.GetBytes(output);
    foreach (Byte b in byteArray)
    {
        playList.Write(b);
    }

ただしplayList = new StreamWriter(filename, false);、一連の数値出力を取得するだけです:

#EXTINFUTF8:76,83101195177111114326711199111110117116328932831173267111110106117110116111 - 731101161141111001179999105195181110

私が推測するのは、キャラクター自体ではなく、キャラクターの数値です。

この低レベルのキャラクター操作を行ってからしばらく経ちましたが、少し錆びています。

アップデート

私は今持っています:

    byte[] byteArray = Encoding.UTF8.GetBytes(output);
    foreach (Byte b in byteArray)
    {
        playList.Write(Convert.ToChar(b));
    }

出力を行うと、一見すると機能しているように見えました。Notepad++ で表示されるファイルは、正しい情報を示しています。ただし、最初のトラックはまだ再生されていません。

4

2 に答える 2

2

ストリーム全体を UTF-8 にしたい。試す:

StreamWriter playList = new StreamWriter(filename, false, System.Text.Encoding.UTF8);

ここで、ストリームに書き込むには、次のようにString名前を渡します。output

playList.Write(output);

ストリームはすべて適切なエンコーディングになるため、次のようなこともできるはずです。

playList.WriteLine("#EXTINFUTF8:76,Señor Coconut Y Su Conjunto - Introducciõn");
于 2010-04-14T02:03:12.900 に答える
0

さて、エンコーディングプレーヤーが期待するものを書いてみてください。そしてそれはutf8です!(私は推測する)

byte[] bytesToWrite = Encoding.Utf8.GetBytes(yourString);

それを見てください:#UTF8あなたのサンプルでは?

于 2010-04-13T21:16:26.267 に答える