■ 플래시 ■/Adobe ActionScript3.0
ByteArray를 사용한 문자열 인코딩
serpiko
2013. 11. 28. 14:05
function readMultiEncodingText(bytes:ByteArray):String { //UTF-8 with BOM if(bytes[0] == 0xEF)if(bytes[1] == 0xBB)if(bytes[2] == 0xBF) return bytes.toString(); //UTF-16 Big Endian if(bytes[0] == 0xFE)if(bytes[1] == 0xFF) return bytes.toString(); //UTF-16 Little Endian if(bytes[0] == 0xFF)if(bytes[1] == 0xFE) return bytes.toString(); //UTF-32 Big Endian if(bytes[0] == 0x0)if(bytes[1] == 0x0)if(bytes[2] == 0xFE)if(bytes[3] == 0xFF) return bytes.toString(); //UTF-32 Little Endian if(bytes[0] == 0xFF)if(bytes[1] == 0xFE)if(bytes[2] == 0x0)if(bytes[3] == 0x0) return bytes.toString(); //기타 var ansiStr:String = bytes.readMultiByte(bytes.bytesAvailable, "ANSI"); var unicodeStr:String = bytes.toString(); if(ansiStr.length < unicodeStr.length) return ansiStr; return unicodeStr; }
출처 : http://airdev.tistory.com/397 원강민님 블로그
사용법이 자세하게 나와있지 않아서 바이너리 형식의 데이터에 대한 사용법을 작성해 둔다.
일단 바이너리 데이터의 UTF지원을 추가해주고, 포인터를 0으로 초기화해준 뒤 쓰면 된는데
약간의 메서드와 속성만 적용해서 아래와 같이 쓰면 된다.
function sendToText($str):String{ var ba:ByteArray = new ByteArray(); ba.writeUTFBytes($str); //UTF문자열쓰기 ba.position = 0; //byteArray 포인터를 0으로 이동 var encoStr:String = readMultiEncodingText(ba); trace(encoStr); return encoStr; } sendToText("달변가보다 실천가");