我如何转换(作为示例):
SeñorCoconutY Su Conjunto - Introducciõn
为:
Señ或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 ++中显示的文件显示正确的信息。但是,第一首曲目仍未播放。
答案 0 :(得分: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");
答案 1 :(得分:0)
byte[] bytesToWrite = Encoding.Utf8.GetBytes(yourString);
在样本中看到:#UTF8
?