2011-07-04 3 views
1

MP3의 ID3 태그 (v2.3)에 유니 코드 제목을 추가하려고합니다. 불행히도, 나는 그것을하는 방법을 알아낼 수 없습니다. id3.org's id3v2 page에 따르면 유니 코드 문자열은 유니 코드 BOM으로 시작해야합니다.ruby를 사용하여 ID3 태그에 유니 코드를 어떻게 추가합니까?

현재 id3v2를 시도하고 있지만 태그는 횡설수설 한 것으로 저장됩니다.

저는 루비로하고 싶습니다만, 리눅스 유틸리티도 사용할 수 있습니다.

업데이트 : 나는 id3lib-ruby 보석을 사용하여 해결책을 찾았습니다. 아래에 나열되어 있습니다.

답변

1

업데이트 : 나는이 id3lib-ruby 보석을 사용하여 작동하는 솔루션을 파악 약간 더 우아한 해결책
을 발견했다.

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)
utf16_no_bom = UTF16 [2 ..- 1] BOM
태그 < < #removes {: id => : TIT2, : textenc => 1, : 텍스트 => utf16_no_bom}

이 사용법의 내용은 id3lib.rb (줄 105)에 약간의 오해의 소지가 있습니다. textenc => 1로 설정하고 UTF-16 BOM (\ xFF \ xFE)을 포함하면 태그 시작 부분에 횡설수설이 생깁니다.

+1

해킹이 아닌 해결책을 원하면 [taglib-ruby] (https://github.com/robinst/taglib-ruby)를보십시오. Tt는 TagLib을 기반으로하며 완전한 유니 코드를 지원합니다 (ID3v2.4는 텍스트를 UTF-8로 저장할 수 있습니다). 문제가있는 경우 github에서 문제를 열어주세요. :) – robinst

+0

몇 달 전에 taglib-ruby를 보았습니다. 꽤 좋아 보인다. 내가 작업하고있는 프로젝트를 업그레이드 할 때 전환 할 것입니다. – stevendaniels

2

문자열을 encode() 하시겠습니까?

+0

저는 ruby ​​1.8.7을 사용하고 있으므로 encode() 메소드가 없습니다. – stevendaniels

+0

1.9.2로 전환 할 때가 되었습니까? :-) –

관련 문제