感谢这个网站和其他一些网站,我创建了一些简单的代码来从 MP3 文件中读取 ID3v2.3 标签。这样做是一次很棒的学习经历,因为我以前对十六进制/字节/二进制等一无所知。
我可以成功读取数据,但遇到了一个我认为与使用的编码有关的问题。我意识到文本帧在“文本”的开头有一个字节,描述所使用的编码,并且在接下来的 2 个字节中可能有更多信息......
例子:
帧 TIT2 中的数据以实际文本之前的字节 $03(十六进制)开始。该文本使用 Encoding.ASCII.GetString 正确显示,尽管开头有一个附加字符
在另一个MP3中,来自TIT2的数据以$01开始,然后是$FF $FE,我认为这与Unicode有关?不过,文本本身被分解了,每个文本字符之间都有 $00,这会阻止数据在 Windows 窗体中显示(一旦遇到 00,文本就会停止,所以我得到第一个字符,就是这样)。我尝试过使用 Encoding.UNICODE.GetString,但这似乎只是返回乱码。
将此数据打印到控制台似乎可以工作,每个字符之间有空格,因此数据的读取工作正常。
我一直在阅读 ID3v2.3 的官方文档,但我想我只是不够了解文本编码部分。
任何可能有帮助的回复或文章链接将不胜感激!
问候
罗斯
只需添加一条注释,用于文本编码代码:
00 – ISO-8859-1 (ASCII)。
01 – UCS-2(带有 BOM 的 UTF-16 编码 Unicode),采用 ID3v2.2 和 ID3v2.3。
02 – ID3v2.4 中的 UTF-16BE 编码无 BOM 的 Unicode。
03 – UTF-8 编码的 Unicode,ID3v2.4。
from:
http://en.wikipedia.org/wiki/ID3 http://en.wikipedia.org/wiki/ID3
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)