Flex (및 HTTPService)를 사용하여 URL에서 데이터를로드합니다.이 데이터는 GBK charset으로 인코딩됩니다. 이러한 URL의 좋은 예는 this one입니다.AS3 : GBK 문자 집합으로 변환
브라우저는 데이터가 GBK charset에 있음을 확인하고 표시되는 중국어 문자를 사용하여 텍스트를 올바르게 표시합니다. 그러나, Flex는 다른 캐릭터 세트의 데이터를 개최하고이 같이하는 일 :
({"q":"tes","p":false,"bs":"","s":["ÌØ˹À","ÌØÊâ·ûºÅ","test","ÌØÊâÉí·Ý","tesco","ÌØ˹ÀÆû³µ","ÌØÊÓÍø","ÌØÊâ·ûºÅͼ°¸´óȫ","testin","ÌØ˹ÀÆ۸ñ"]});
내가 제대로 브라우저에서 표시하는 것과 같은 문자열로 텍스트를 변경해야합니다. 내가 이미 사용하여 지금까지 최고의 결과,이 ByteArray을 사용하고있는 중이 야 "ISO-8859-1"
var convert:String;
var byte:ByteArray = new ByteArray();
byte.writeMultiByte(event.result as String, "iso-8859-1");
byte.position = 0;
convert = byte.readMultiByte(byte.bytesAvailable, "gbk");
이 브라우저의 결과가 아니라 전적으로 매우 가까운 다음 문자열을 만듭니다 :
({"q":"tes","p":false,"bs":"","s":["特?拉","特殊符号","test","特殊身份","tesco","特?拉汽车","特视网","特殊符号?案大?","testin","特?拉????]});
일부 문자는 여전히 "?"로 대체됩니다. 점수. 그리고 브라우저 결과를 Flex로 복사하여 인쇄 할 때 올바르게 표시되므로 Flash 추적이나 그 밖의 다른 곳에서는 지원되지 않는 문자가 문제가되지 않습니다.
재미있는 사실 : 메모장 ++는 Flex의 bytearray 방식과 거의 비슷하지만 결과는 비슷합니다. ISO-8859-1로 GBK에서 올바른/예상 문자열을 변환 할 때 또한 NP ++에, 나는 한 플렉스는 약간 다른 문자열을 얻고하면 URL에서 점점 :
({"q":"tes","p":false,"bs":"","s":["ÌØË¹À","ÌØÊâ·ûºÅ","test","ÌØÊâÉí·Ý","tesco","ÌØË¹ÀÆû³µ","ÌØÊÓÍø","ÌØÊâ·ûºÅͼ°¸´óÈ«","testin","ÌØË¹ÀÆû³µ¼Û¸ñ"]});
이 나에게 보인다 string은 Flex 이이되어야하고, ByteArray 접근법이 올바른 결과 (브라우저에서 볼 수 있음)를 생성해야하는 문자열입니다. 그래서이 가능 3 개 원인을 참조하십시오
- 뭔가가 약간 다른 (가능성)로 원인 플렉스의 URL에서 오는 데이터에 무슨 일이 일어나고
- 수신 된 문자 집합은 실제로 ISO-8859- 아니다 1, 그러나 또 다른 비슷한 문자셋
- 인코딩과 문자셋의 차이점을 완전히 이해하지 못했기 때문에이 문제를 이해하지 못할 수도 있습니다.
어떤 도움이나 생각이라도 대단히 감사하겠습니다. 감사합니다.