【发布时间】:2012-09-18 19:21:25
【问题描述】:
我正在运行以下代码:
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 不支持 Unicode,这本身就使得非 ASCII 字符充其量是有问题的,而且很明显,TagLib# 没有使用与俄语文本兼容的编码。我建议你坚持使用纯 ID3v2。
-
但是用winamp修改ID3v1标签保存俄语文本没有任何问题,甚至TagLib#也能正常读取。也许有任何可能做到这一点?
-
Winamp 工作,因为它假定您的本机系统代码页 (Windows-1251),并且大概,TagLib# 在阅读时做同样的事情。但是,例如在我的系统中,相同的文件无法正确加载,因为我的系统配置不同(它将使用 Windows-1252,从而导致无意义的重音字符序列)。这就是为什么 v1 一旦超出基本 ASCII 就没有用了,而且几乎所有东西都支持 v2(还有一些可能不支持的东西,可能无论如何都无法显示您的俄语字符)。
-
感谢迈克尔的解释。由于 TagLib# 自动写入 v1 标记,因此选择正确的编码甚至对非 unicode 字符使用系统编码设置可能很有用。这就是我所说的“可能做到”。否则,对于 ASCII 字符来说,它看起来像预期的那样,而对于非 ASCII 字符来说,它看起来很丑。
标签: c# taglib-sharp