WonHada.com으로 이전

System.useCodePage 대신 이렇게.. 본문

플래시/플렉스[Flash/Flex]

System.useCodePage 대신 이렇게..

반주부 2009. 1. 22. 20:53
반응형




System.useCodePage = true; 많이들 쓰시나요? 요즘은 UTF-8이 대세여서 그런지 별로 쓸 일이 없습니다..그런데 이번에 RSS 리더를 개발하던 중 문제가 생겼습니다..

RSS 리더에서 불러들인 페이지들의 경우 UTF-8이 아닌 것도 있다는 거죠..네이버 카페가 대표적입니다..EUC-KR을 쓰죠..

EUC-KR의 경우 System.useCodePage = true;를 사용하면 해결됩니다..
그런데 지금 만드는건 RSS리더잖아요..즉, UTF-8도 있고 EUC-KR도 있습니다..다른 인코딩도 있겠죠..
System.useCodePage를 true, false로 변경하면서 해당하는 웹 페이지를 불러오면 될까요?
물론 어느정도 딜레이를 준다면 가능할 듯 합니다..하지만 그렇게 구현하는건 왠지 아닌거 같죠? 속도가 빨라야 하니까요..

그래서 위와 같은 함수를 만들게 되었습니다..
BOM만으로는 UTF-8을 정확하게 잡을 수가 없습니다..없는 경우도 있으니까요..

처음 코드는 위와 달리 조금 더 복잡했습니다..encodeURI()도 사용했고 바이트 어레이를 좀 더 복잡하게 다뤘죠..몇번의 테스트 끝에 위의 코드가 나왔는데요..아래 예제에 적용해 봤습니다..
아직 UTF-8, EUC-KR, UCS2 Big/Little Endian만 테스트를 했을 뿐입니다..즉, 앞으로 다른 경우가 생길 경우 업데이트를 해야 한다는 뜻이죠..

찾게 되면 업데이트 하겠습니다..

* 아래 예제에서는 텍스트를 뿌려줄 때 부하를 막기 위해 800자 까지만 보이도록 했습니다..
** 페이지를 불러올 때 인코딩 정보를 정확하게 알 수 있는 좋은 방법이 있다면 알려주세요^^








반응형