Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中对ID3标记的字符串进行编码#_C#_Encoding_Id3 - Fatal编程技术网

C# 如何在C中对ID3标记的字符串进行编码#

C# 如何在C中对ID3标记的字符串进行编码#,c#,encoding,id3,C#,Encoding,Id3,我在ID3标签编码方面有问题。我查询一个Web服务,该服务返回一些XML,其中包括一个节点,如下所示: <name>Blue Öyster Cult</name> 我知道这是一个编码问题,但我正在努力找出如何让它工作。我的理解是ID3标签需要编码为ISO-8859-1 我写了这段代码,但没什么区别: Encoding newEncoding = Encoding.GetEncoding("ISO-8859-1"); Encoding utf8 = Encoding.UT

我在ID3标签编码方面有问题。我查询一个Web服务,该服务返回一些XML,其中包括一个节点,如下所示:

<name>Blue Öyster Cult</name>
我知道这是一个编码问题,但我正在努力找出如何让它工作。我的理解是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);
这个方向对不对

非常感谢您的建议。

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.
有关详细规格,请参阅



另请参见-post和类似问题。

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

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

从该XML提取值时,它具有要保存到文件ID3标记的正确编码。

您使用的是ID3v1还是ID3v2?ID3v1仅为ASCII,而ID3v2可以使用Unicode编码。如果维基百科的文章是正确的,它并不总是Unicode,但是有一个编码字节选择它的编码。
WebClient client = new WebClient();    
client.Encoding = Encoding.UTF8;
String htmlCode = client.DownloadString(requestURL);