我在ID3标签中遇到编码问题。我查询一个webservice,它返回一些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);
这是否正确?
任何建议都非常感谢。
答案 0 :(得分:2)
文本框用标记字节标记。
$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找到。
另见View/edit ID3 data for MP3 files - 发布类似问题。
答案 1 :(得分:0)
我遇到的问题实际上是在保存到ID3标签之前。我收到的XML设置为UTF-8,但请求页面的WebClient不是。添加此处显示的第二行解决了问题。
WebClient client = new WebClient();
client.Encoding = Encoding.UTF8;
String htmlCode = client.DownloadString(requestURL);
当从此XML中提取值时,它具有要保存到文件ID3标记的正确编码。