몇일전에 포스팅한 '집에 있는 mp3를 회사에서 들어보자'에서 소개했던 VibeStreamer를 4일째 사용중입니다. 아주 만족하고 있습니다. :-)

다만 한글 mp3 파일이 제대로 플레이되지 않는 문제가 있어 확인해보니, 파일시스템 및 ID3 tag에서는 cp949를 사용하는데 javascript에서는 (아시다시피) 유니코드를 사용하는게 원인이더군요.

(javascript의 escape(), encodeURI() 함수가 euc-kr 인코딩을 지원하지 않죠)

웬만하면 vibe streamer 서버 티어에서 해결하고 싶었는데, 그쪽 스크립트 엔진에 iconv()를 얹자니 도저히 방법이 없어서, 그냥 '%EB%82%98' 형태로 인코딩된 한글 utf8 문자열을 '%B3%AA' 형태의 cp949 인코딩 문자열로 변환하는 자바스크립트 함수를 하나 만들었습니다.

만든 방법은,

1) 먼저 PERL로 cp949 코드리스트를 출력하는 방법을 mwultong님의 블로그 포스트에서 발견, 조금 수정해서 (PERL의 Encode 모듈과 URI::Escape 모듈을 사용했습니다) 전체 cp949 캐릭터와 utf8 캐릭터의 대응 테이블을 만들었고, (mwultong님 감사합니다 ^^)

2) 이 대응 테이블을 다음과 같은 형태의 자바스크립트 object로 변환한 뒤에,

var codeTable = {
   E38080 : '%A1%A1',
   E38081 : '%A1%A2',
   E38082 : '%A1%A3',
   ...(생략)
}

3) 간단한 스트링 파서를 하나 만들고, 다음과 같은 방식으로 값을 꺼내왔습니다.

var result = eval('codeTable.' + utf8);

VibeStreamer 사용하시는 분들은 다음 첨부파일을 다운로드받아서 c:\Program Files\VibeStreamer\skins 아래에 압축을 푸시고, 서버의 스킨을 'Korean'으로 선택해주시면 됩니다.


VibeStreamer 따위에는 관심없고 자바스크립트 함수만 쓰시겠다는 분들은 다음 자바스크립트를 참조하세요: (10분만에 만든 소스라 개판입니다. 누가 개선해주신다면 대환영입니다)



ps. 지금 올해초에 나온 임재범님의 라이브콘서트 mp3 듣고 있습니다. 역시 임재범 ;-x
  1. 김종규 2007.11.19 13:27 신고 댓글주소 | 수정 | 삭제 | 댓글

    vibestreamer 를 잘 사용하고 있는 1人 입니다.
    안 그래도 답답하던 한글을 해결하고자 말씀해주신 방법을 시도해 보았는데 웹페이지에서 디렉토리 내용이 뜨질 않네요.
    자바 스크림트를 실행하도록 하려면 따로 설정이 필요한 건지요.
    웹 프로그래밍 쪽으로는 아는 게 없어서 뭘 더 어떻게 해 봐야 할 지 난감합니다 --;;.
    혹시 문제가 될 만한 게 떠오르는 게 있으시면 감사하겠습니다.
    좋은 하루 되세요 ^^

  2. Favicon of http://hkjinlee.tistory.com BlogIcon 진이헌규 2007.11.23 09:21 신고 댓글주소 | 수정 | 삭제 | 댓글

    김종규 / 자바스크립트 에러가 발생하여 화면이 아예 뜨지 않는 상황이 아닌가 싶습니다. (브라우저 환경 따라 다소 차이가 있더군요) 혹 Firefox를 사용하신다면 Bugzilla라는 플러그인을 설치하시고 자바스크립트의 어디에서 에러가 나는지 확인을 해보셔야 할 것 같습니다.

  3. Favicon of http://pluto.ecplaza.net:8080/tt/river BlogIcon 리버 2008.08.20 15:45 신고 댓글주소 | 수정 | 삭제 | 댓글

    좋은 스크립트 올려주셔서 감사합니다. 가져다가 잘 썼네요. 고맙습니다.

  4. 그래피티 2010.04.06 19:26 신고 댓글주소 | 수정 | 삭제 | 댓글

    안녕하세요.
    2010년이 되서야 검색해서 이 글을 봤습니다.
    그런데 vibe streamer가 업그레이드 되서 그런지,
    올려주신 파일 적용이 어렵더군요.

    최근 버젼의 vibe streamer에서 한글 지원이 어려울까요?