1

我如何转换(例如):

Señor Coconut Y Su Conjunto - Introducciõn

到:

Señor Coconut Y Su Conjunto - Introducciõn

我有一个创建 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 回答