2012-03-27 2 views
0

플래시를 사용하여 유니 코드가있는 UTF8 페이지에서 내용을 읽습니다. 문제는 플래시가 데이터를로드 할 때 ???????? 대신 모든 유니 코드.플래시에 utf8을 표시 하시겠습니까?

무엇이 문제 일 수 있습니까?

답변

1

기본적으로 Flash는 문자열을 UTF-8을 사용하여 인코딩 한 것처럼 처리합니다. 인쇄 할 수없는 문자 또는 유효하지 않은 문자/글리프를 대체 할 수있는 문자를보고있는 이유는 System.useCodepagetrue으로 설정 한 것일 수 있습니다. 그럴 경우 왜 그랬습니까?

그렇지 않으면 문자를 표시하는 데 사용되는 글꼴에 필요한 문자의 글리프가 누락되었을 수 있습니다. Font.hasGlyphs("string with the glyphs");을 사용하여 텍스트를 표시 할 수 있는지 확인할 수 있습니다. 일반적으로 포함 된 글꼴에만 적용됩니다.

또 다른 가능성은 표시하려는 소스 텍스트가 UTF-8로 인코딩 된 문자열이 아니라는 것입니다. XML 및 HTML과 같이 특히 많이 사용되는 파일 형식 중 일부는 실제 페이로드와 일치하지 않는 형식의 선언을 사용합니다 (예제 XML 태그 : <?xml encoding="utf-8" ?>은 문서의 실제 인코딩과 관계없이 모든 XML에 첨부 될 수 있음). 텍스트가 UTF-8인지 확인하려면 ByteArray로 읽고 모든 바이트의 첫 번째 비트가 0으로 설정되어 있는지 확인하십시오. 국가 별 문자를 사용하는 싱글 바이트 인코딩은 첫 번째 비트를 사용하여 문자를 인코딩하는 반면 UTF-8은 그렇게하지 않습니다.

1

Flash는 내부적으로 문자열을 나타내는 데 UTF-8을 사용하므로 전체 스택에서 UTF-8 인코딩을 사용하면 문제가 발생하지 않습니다.

아마도 어딘가에 암묵적인 디코딩/인코딩 단계가있을 것입니다. 이것은 실제로 불행히도 백만 가지 일 수 있습니다. 처음부터 시작하여 추적 및/또는 로그 메시지를 삽입하여 변환이 실패한 곳을 확인하십시오. XML 콘텐츠가 UTF-8을 사용하는지 확인하십시오. 특히 PHP를 사용하는 경우 모든 PHP 소스 파일이 UTF-8 인코딩으로 저장되어 있는지 확인하십시오. 간단한 텍스트 편집기에서 PHP 파일을 편집하면 Windows/Mac 형식이됩니다. 소스 파일은 문자 인코딩을 깨뜨릴 것입니다. 또한 HTML 요청/응답 헤더를 확인하여 인코딩 불일치가 있는지 확인하십시오.

관련 문제