【问题标题】:taglib sharp id3v1 tag, question marks instead of Russian letterstaglib 锐利的 id3v1 标签,问号而不是俄文字母
【发布时间】: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();

id3v1id3v2 标签均已设置,但只有 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


【解决方案1】:

ID3v1 是旧标准,仅支持 ANSI characters

查看更多信息here

【讨论】:

    【解决方案2】:

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

    我已经结合了标签和属性 - 没有什么不同。但!有些文件有 2 个标签“集合”:ID3v2、ID3v2 和 ID3v1。在这种情况下,我可以使用 CYR 字符更改标签。这意味着“ID3v2,ID3v2”我没有解开。为什么 2 个相同 - 没有答案。

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

    Vlad L,只需对这些文件使用 Translit。我的东西 TagLib# 检测字符集,让你没有机会改变它(1251!= 1252 等)

    【讨论】:

    • translit 不是选项,所以我只是禁用了 v1 并忘记了它:)
    猜你喜欢
    • 2021-11-23
    • 2016-04-03
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多