我正在尝试将 unicode 标题添加到 MP3 的 ID3 标签(v2.3)。不幸的是,我不知道该怎么做。根据id3.org 的 id3v2 page,Unicode 字符串必须以 Unicode BOM 开头。
我目前正在尝试 id3v2,但标签保存为乱码。
我想用 ruby 来做,但 linux 实用程序也是可以接受的。
更新: 我想出了一个使用id3lib-ruby gem 的解决方案。它在下面列出。
我正在尝试将 unicode 标题添加到 MP3 的 ID3 标签(v2.3)。不幸的是,我不知道该怎么做。根据id3.org 的 id3v2 page,Unicode 字符串必须以 Unicode BOM 开头。
我目前正在尝试 id3v2,但标签保存为乱码。
我想用 ruby 来做,但 linux 实用程序也是可以接受的。
更新: 我想出了一个使用id3lib-ruby gem 的解决方案。它在下面列出。
你试过encode()
串吗?
更新:找到了一个稍微优雅的解决方案
我想出了一个使用id3lib-ruby gem 的解决方案。
tag = ID3Lib::Tag.new('talk.mp3')
utf16 = Iconv.conv('UTF-16BE', 'UTF-8', str) #UTF-16BE doesn't have BOM
tag << {:id => :TIT2, :textenc => 1, :text => utf16}
utf16 = Iconv.conv('UTF-16', 'UTF-8', str)
标签 << {:id => :TIT2, :textenc => 1 , :text => utf16_no_bom}
utf16_no_bom = utf16[2..-1] #删除BOM
id3lib.rb (第 105 行)中的这种用法注释有点误导。如果您设置 :textenc => 1 并包含 UTF-16 BOM (\xFF\xFE),那么您最终会在标签开头出现乱码。