C# taglib sharp id3v1标签,问号代替俄语字母

C# taglib sharp id3v1标签,问号代替俄语字母,c#,taglib-sharp,C#,Taglib Sharp,我正在运行以下代码: TagLib.File f = TagLib.File.Create(path); f.Tag.AlbumArtists = f.Tag.Artists = new string[] { "артист" }; f.Tag.Title = "песня"; f.Save(); 设置了id3v1和id3v2标记,但仅正确设置了id3v2标记。v1标签只显示“???????”问号而不是字母 有人能帮我吗? 谢谢 ID3v1是一个旧的标准,仅提供支持 请参阅更多信息。ID3v1

我正在运行以下代码:

TagLib.File f = TagLib.File.Create(path);
f.Tag.AlbumArtists = f.Tag.Artists = new string[] { "артист" };
f.Tag.Title = "песня";
f.Save();
设置了
id3v1
id3v2
标记,但仅正确设置了
id3v2
标记。v1标签只显示“???????”问号而不是字母

有人能帮我吗?
谢谢

ID3v1是一个旧的标准,仅提供支持


请参阅更多信息。

ID3v1是一个旧标准,仅支持


查看更多信息。

不幸的是,TagLib在其内部进行了一些编码。我已经测试了100多个mp3文件。我真的很困惑:为什么有些我可以在标签中用CYR文本更新,但同时有些却有“???????”。相同的代码

我结合了标签和属性,没有什么不同。但是有些文件有两个标记“集合”:ID3v2、ID3v2和ID3v1。在这种情况下,我可以使用CYR字符更改标记。“ID3v2,ID3v2”是什么意思?我还没准备好。为什么两个相同-没有答案

我看了一下TagLib的一些代码,喜欢这里的“this.encoding=…”。在那之后,我不再分析“为什么”和“在哪里”


Vlad L,用Translatit来处理那些文件。我认为TagLib#检测字符集并没有机会更改它(1251!=1252等)

不幸的是,TagLib在内部进行了一些编码。我已经测试了100多个mp3文件。我真的很困惑:为什么有些我可以在标签中用CYR文本更新,但同时有些却有“???????”。相同的代码

我结合了标签和属性,没有什么不同。但是有些文件有两个标记“集合”:ID3v2、ID3v2和ID3v1。在这种情况下,我可以使用CYR字符更改标记。“ID3v2,ID3v2”是什么意思?我还没准备好。为什么两个相同-没有答案

我看了一下TagLib的一些代码,喜欢这里的“this.encoding=…”。在那之后,我不再分析“为什么”和“在哪里”


Vlad L,用Translatit来处理那些文件。我认为TagLib#检测字符集并没有机会更改它(1251!=1252等)

ID3v1不支持Unicode,这本身最多只能使非ASCII字符产生问题,而且显然,TagLib#没有使用与俄语文本兼容的编码。我建议您坚持使用纯ID3v2。但是使用winamp修改ID3v1标记可以毫无问题地保存俄文文本,甚至TagLib也可以正确阅读。也许有可能做到这一点?Winamp之所以能够工作,是因为它假定您的本机系统代码页(Windows-1251),而TagLib#在读取时可能也会这样做。但是,在例如我的系统上,同一个文件无法正确加载,因为我的系统配置不同(它将使用Windows-1252,从而导致重音字符的无意义序列)。这就是为什么v1在超出基本ASCII之后就不再有用了,而且几乎所有东西都支持v2(还有一些可能不支持的东西,可能无法显示俄语字符)。感谢Michael的解释。由于TagLib#自动写入v1标记,因此选择适当的编码,甚至对非unicode字符使用系统编码设置可能会很有用。这就是我所说的“有可能做到”的意思。否则,ASCII字符看起来和预期的一样,非ASCII字符看起来很难看。ID3v1不支持Unicode,这使非ASCII字符充其量也有问题,而且显然,TagLib#没有使用与俄语文本兼容的编码。我建议您坚持使用纯ID3v2。但是使用winamp修改ID3v1标记可以毫无问题地保存俄文文本,甚至TagLib也可以正确阅读。也许有可能做到这一点?Winamp之所以能够工作,是因为它假定您的本机系统代码页(Windows-1251),而TagLib#在读取时可能也会这样做。但是,在例如我的系统上,同一个文件无法正确加载,因为我的系统配置不同(它将使用Windows-1252,从而导致重音字符的无意义序列)。这就是为什么v1在超出基本ASCII之后就不再有用了,而且几乎所有东西都支持v2(还有一些可能不支持的东西,可能无法显示俄语字符)。感谢Michael的解释。由于TagLib#自动写入v1标记,因此选择适当的编码,甚至对非unicode字符使用系统编码设置可能会很有用。这就是我所说的“有可能做到”的意思。否则,ASCII字符看起来和预期的一样,而非ASCII字符看起来很难看。Translatit不是选项,所以我只是禁用了v1并忘记了:)Translatit不是选项,所以我只是禁用了v1并忘记了:)