«前の日記(2006-11-23(木)) 最新 次の日記(2006-11-25(土))»

vdrめも

検索キーワード:
[PR]:「Chef活用ガイド コードではじめる構成管理 (大型本), (Kindle版)」発売中です。


2006-11-24(金) 待て続報 [長年日記]

_ [comp] audacious + --enable-chardet + taglib

yazさんから丁寧な解説付き返事をいただく。ありがたや。まとめると、

  • chardet を有効にして問題が起こるのは taglib の仕様のせい。
  • それを解消するためのパッチが taglib-1.4_wchar.diff
  • taglib-1.4_wchar.diff を taglib に取り込んでもらえれば、chardet を常に有効にしても問題ない。

手元では taglib-1.4_wchar.diff を当てた taglib を使用中なので問題は起きなかったようだ。

なお、taglib の仕様の問題について解説していただいたのをまとめると、

  • taglib の API では UTF-8 か latin-1 を指定してタグ文字列を得る。
  • taglib は内部表現に UCS-2BE (Universal Character Set coded in 2 octets Big Endian) を使っている。
  • UTF-8 が指定されたら内部で UCS-2BE → UTF-8 の変換を行う、latin-1 が指定されたら単に UCS-2BE の下位バイトだけを返す。
  • chardet ではタグ文字列を得るのに latin-1 を指定する。もしタグ文字列が UCS や UTF-8 の場合、UCS-2BE の上位バイトも使う可能性があるので、文字情報が損われる。
  • taglib-1.4_wchar.diff は latin-1 を指定されたときに上位バイトをチェックし、上位バイトに 0 以外の値があれば文字列を UTF-8 に変換して返すようにする。taglib はタグ文字列に Unicode 系の文字が使われているときのみ UCS-2BE の上位バイトを使うので、この変換は必ず有意な UTF-8 文字列を生成する。

ということだそうだ。

audacious libtag != bmpx libtag? というのも見つけた。

_ [movie] ベートーベン, SAMURAI

ベートーベン [DVD] SAMURAI [DVD]


2006年
11月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

[amd64 | audacious | comp | debian | gkrelluim | kip | misc | movie | research | rime | unicon | vdr | work | えふえふ]

書いてる人: dai

パッチ等(無保証)

GPG Fingerprint = 0B29 D88E 42E6 B765 B8D8 EA50 7839 619D D439 668E