1

我在 ID3 标签中编码时遇到问题。我查询一个 web 服务,它返回一些 XML,包括一个节点,如下所示:

<name>Blue Öyster Cult</name>

然后我使用这些信息来更新我的 ID3 标签。问题是标签被更新为:

Blue Öyster Cult

我知道这是一个编码问题,但我正在努力弄清楚如何让它工作。我的理解是 ID3 标签需要编码为 ISO-8859-1。

我写了这段代码,但没有区别:

Encoding newEncoding = Encoding.GetEncoding("ISO-8859-1");
Encoding utf8 = Encoding.UTF8;
byte[] utfBytes = Encoding.UTF8.GetBytes(newArtistName);
byte[] asciBytes = Encoding.Convert(utf8, newEncoding, utfBytes);
string encodedArtistName = newEncoding.GetString(asciBytes);

这是在正确的方向吗?

非常感谢任何建议。

4

2 回答 2

2

ID3 v2

文本帧用编码字节标记。

$00 – ISO-8859-1 (ASCII).
$01 – UCS-2 (UTF-16 encoded Unicode with BOM), in ID3v2.2 and ID3v2.3.
$02 – UTF-16BE encoded Unicode without BOM, in ID3v2.4.
$03 – UTF-8 encoded Unicode, in ID3v2.4.

详细规范可以在http://id3.org/id3v2-00找到。


另请参阅查看/编辑 MP3 文件的 ID3 数据- 发布类似问题。

于 2012-06-02T22:21:12.987 回答
0

我遇到的问题实际上是在保存到 ID3 标签之前。我收到的 XML 设置为 UTF-8,但请求页面的 WebClient 没有。添加此处显示的第二行解决了该问题。

WebClient client = new WebClient();    
client.Encoding = Encoding.UTF8;
String htmlCode = client.DownloadString(requestURL);

当从这个 XML 中提取值时,它具有正确的编码以保存到文件 ID3 标记中。

于 2012-06-03T11:52:41.900 回答