euc-kr로 인코딩된 곡명이 깨지고 있다

BMP (beep-media-player)를 사용해서 음악을 듣고 있는데, 곡명 중에 원래 한글 내지는 euc-kr (cp949) 호환으로 되어있던 곡명들이 깨지고 있었다. 근데 화면에 나오는 에러메시지가 `유효하지 않은 UTF-8′ 이어서 출력할 때 사용하는 encoding을 알 수 있었고 (지금와서 보니 LANG/LC_ALL가져다 쓰는 것 같지만), 윈도우 파티션에서 euc-kr로 된 태그들을 수정하는 코드를 짜기 시작했다.

taglib (http://developer.kde.org/~wheeler/taglib.html)과 POSIX iconv를 사용해서 슥슥 짰더니 대충 돌기시작 ID3v1 tag는 album 이름 부분에서 약간 문제가 있는 듯도하지만, 나머지는 잘 돌고 있음( –)
간단한 예로 밑에 스샷에서 보면 14번/16번 곡과 15/17번 곡은 각각 동일한 파일이었다. 단지 태그 정보를 읽어서 인코딩 바꿔준 결과 제대로 보이는 것 뿐 -_-; 12번 곡의 artist field는 지금 encoding이 뭔지도 추정하지 못하고 있다(그래서 지금도 여전히 깨진다) 도대체 뭘까;
conv.png

Jinuk Kim
Jinuk Kim

SW Engineer / gamer / bookworm / atheist / feminist

Articles: 935

4 Comments

  1. 허거.. 글쓰다 날라갔네.. 이 위에거 지워주길 ;;
    아마 추측컨데, 깨지는 파일은 v1 태그만 들어가 있는데 변환이 안되었거나, v1 v2 둘다 들어 가있는데 v2 만 변환 되었거나… v2 인코딩 정보가 잘못되었거나 정도가 아닐지 ;;
    그나저나 저런것도 C로 짜는구나 (…) 괴수 ㅡㅡ;;;
    id3 는 사실 별로 공식 표준도 아니라 ;; 우리나라 mp3 의 90% 는 euc-kr 로 인코딩 되어 있는 거 같음 ㅜㅜ 난 그냥 windows 에서 itunes 로 유니코드 변환해서 씀.

  2. 수원 // ID3v1/v2 둘 다 읽은 다음에 둘다 변경하고 있거든요; 근데 ID3v1 쪽에서만 이상한 트레일링이 붙어서 -_-;
    결국 저 문제 ID3v2 태그 있으면 그것만 변환하고, ID3v2 -> ID3v1으로 복사(…)해서 해결하는 중이에요;

  3. 저런 코드까지 짜다니······. 나는 그냥 곡명으로 표시하도록 하고 하드를 마운트할 때 캐릭터셋을 utf8로 지정함.

Leave a Reply