예전 AS2 LoadVar 시절, 외부데이터를 이용할 경우
System.useCodePage = true 한방이면 거의 모든게 해결이 되었다.
하지만 점점 까탈스러워지는 as...
먼저 useCodePage 레퍼런스내용
----------------------------------------------------------------------------------------------------------------
외부 텍스트 파일을 해석하는 데 사용할 코드 페이지를 지정하는 부울 값입니다. 이 속성을 false
로 설정하면 외부 텍스트 파일이 유니코드로 해석됩니다. 이러한 파일은 저장할 때 유니코드로 인코딩되어야 합니다. 이 속성을 true
로 설정하면 외부 텍스트 파일이 응용 프로그램이 실행되는 운영 체제의 일반 코드 페이지로 해석됩니다. useCodePage
의 기본값은 false
입니다
useCodePage
를 true
로 설정하는 경우 응용 프로그램이 실행되는 운영 체제의 일반 코드 페이지에 외부 텍스트 파 일에 사용되는 문자가 포함되어 있어야 텍스트가 표시됩니다
----------------------------------------------------------------------------------------------------------------
몬말이냐하면 true로 설정하면 울나라 어지간한 컴터에서는 EUC-KR로 처리한다는 소리.
하지만 문제는 as3에서 URLLoader를 이용할경우
dataFormat을 variables로 설정하면 useCodePage를 true로 설정하여도 한글이 깨지게 된다.
왜??십ㅁ올밍ㄴ;로민아로미로 왜ㅐㅐㅐㅐㅐㅐ???
아래는 dataFormat 레퍼런스내용
----------------------------------------------------------------------------------------------------------------
dataFormat : String = "text"
다운로드하는 데이터를 텍스트(URLLoaderDataFormat.TEXT), 원시 이진 데이터(URLLoaderDataFormat.BINARY) 또는 URL 인코딩된 변수(URLLoaderDataFormat.VARIABLES) 중 어떤 형식으로 수신할 것인지 제어합니다.
----------------------------------------------------------------------------------------------------------------
URL 인코딩된....URL 인코딩된....URL 인코딩된....URL 인코딩된....URL 인코딩된....URL 인코딩된....URL 인코딩된....
그렇다면 어떻게 해야 할까??
역시 모든해답은 레퍼런스에 있다.
레 투더 퍼런스
----------------------------------------------------------------------------------------------------------------
모든 플랫폼에서 응용 프로그램에 사용된 외부 텍스트 파일을 볼 수 있게 하려면 모든 외부 텍스트 파일을 유니코드로 인코딩하고 useCodePage
를 false
로 설정된 상태로 두어야 합니다. 이렇게 하면 응용 프로그램(Flash Player 6 이상 버전)은 텍스트를 유니코드로 해석합니다.
----------------------------------------------------------------------------------------------------------------
as3에서 URLLoader를 이용할경우
useCodePage는 false로 놔둔채 텍스트를 유니코드로 인코딩채로 받아야 한다.
ex)
$txt=iconv("EUC-KR","UTF-8",$txt);
echo $txt;
하지만 이렇게 쉽게 끊나지않는다.
URLVariables 를 이용해서 데이터를 넘길땐 한글이 깨진다는것 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 어쩔
제일 간단한 것은 귀찮더라도 플래시에서 보낼 문자열을 하나하나 URL인코딩해서 넘기는 것이다.
encodeURIComponent | () | 함수 |
위의 함수를 이용하면된다.
다른 방법은 그냥 useCodePage를 보낼땐 true로 받을땐 false로 받으면 된다.
예를 들면 URLLoader의 load명령전 System.useCodePage=true; 를 넣고
open 이벤트가 일어날때 System.useCodePage=false;를 넣어주는 것이다.
단 이럴 경우 한글이 그대로 전달되기 때문에 몇몇의 특수문자가 문제를 일으킬수있다 (< > & 등등)
xml
xml 데이터라면 useCodePage 를 true로 하고
dataFormat을 text로 설정하면 그냥 다 ok
추가로 xml 연동에 있어서 생기는 인코딩 문제는 아래분들의 포스팅에서 대부분 해결
'ActionScript > AS3.0' 카테고리의 다른 글
Scale조정 과 위치정렬. 이미지크기 바꾸는건 껌. AutoFitArea 바이... (0) | 2011.03.02 |
---|---|
addFrameScript 비공식 함수 (0) | 2011.02.14 |
간단한 비율계산 (1) | 2008.07.20 |
삼각함수와 플래시 - 3. 원의 영역으로 드래그 (0) | 2008.07.07 |
삼각함수와 플래시 - 2. 원형회전 (0) | 2008.07.07 |