2012-06-02 145 views
1

我在編碼ID3標籤時遇到問題。我查詢一個Web服務,其返回一些XML,包括一個節點,如下面的一個:如何在C#中編碼ID3標籤的字符串

<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

您使用ID3v1還是ID3v2? ID3v1是僅ASCII的,而ID3v2可以使用Unicode編碼。 http://en.wikipedia.org/wiki/ID3#ID3v2 –

回答

0

我遇到的問題實際上是在保存到ID3標籤之前。我收到的XML被設置爲UTF-8,但請求頁面的WebClient不是。添加此處顯示的第二行解決了問題。

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

當從這個XML中提取值時,它具有正確的編碼保存到文件ID3標籤。

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找到。


另請參閱View/edit ID3 data for MP3 files - 有類似問題的帖子。

+0

如果維基百科的文章是正確的,它並不總是Unicode,但有一個編碼字節選擇其編碼。 http://en.wikipedia.org/wiki/ID3#ID3v2 –