ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • FusionCharts (Flash) UTF-8 XML 인코딩, BOM
    Programming 2015. 2. 4. 12:32

    EUC-KR 언어셋 기반 사이트를 UTF-8로 Converting...


    EUC-KR → UTF-8 일괄 변환시

    - Zend 파일 PASS

    - XML 파일 (기본 인코딩이 UTF-8) PASS

    - Database 언어셋도 UTF-8 이라 PASS.


    FusionCharts XML Data Load 한글이 깨지는 문제 발생.

    (주저리주저리

        파일도 DB도 리눅스 웹서버 언어셋도 UTF-8!!!

        퓨전차트에서도 utf-8 지원하다고 되어 있고!! 완전 멘붕상태..)


    해결책 : BOM UTF8파일로 인식하게 하면 된다.

    <?php echo "\xEF\xBB\xBF<?xml version = \"1.0\" encoding = \"UTF-8\"?>"; ?>



    URL   http://kb.fusioncharts.com/questions/387/How+to+use+UTF-8+characters+with+PHP%3F

    If the XML data provider is a PHP file, as in this case, then the output should follow this sequence:

    • The php should output the BOM as shown in the code below:
      <?php
       echo pack
      ("CCC",0xef,0xbb,0xbf);
       
      ?>
      This should be the first output from this php.
    • Next, the xml declaration should be output:
      <?xml version='1.0' encoding='UTF-8'?>
    • Finally, the xml data should be output

    Try not to put any empty lines or spaces in the output xml.

    When connecting to the database, the following query should be executed, before running query to get data in UTF8:

     mysql_query ( "SET NAMES 'UTF8'" );  

    This will inform mysql that all incoming data are UTF-8, it will convert them into table/column encoding. Same will happen when mysql sends you the data back - they will be converted into UTF-8.

    You will also have to assure that you set the content-type response header to indicate the UTF-8 encoding of the page as shown:

    header('Content-type: text/xml;charset=UTF-8');


    해결하기까지 조사한 내용


    1) Flash player - UTF8 파일을 지원하니? > 지원함. (개발머신들 전부 상위 버전 확인)

    URL  http://helpx.adobe.com/kr/flash/using/multilanguage-text.html

    유니코드 및 Flash Player

    Flash Player 6 이상에서는 유니코드 텍스트 인코딩을 지원합니다. Flash Player 6 이상을 사용하는 사용자는 올바른 글꼴이 설치되어 있기만 하면 누구나 플레이어가 실행되는 운영 체제의 언어에 상관없이 다국어 텍스트를 볼 수 있습니다.

    Flash Player에서는 사용자가 다르게 지정하지 않는 한, Flash Player 응용 프로그램과 연관된 모든 외부 텍스트 파일이 유니코드로 인코딩된 것으로 가정합니다.

    Flash MX 또는 이전 버전에서 제작된 Flash Player 5 또는 이전의 Flash Professional 응용 프로그램의 경우 Flash Player 6 및 이전 버전에서는 플레이어가 실행되는 운영 체제의 기존 코드 페이지를 사용하여 텍스트를 표시합니다.


    2) System.useCodepage = false;

    기본값은 false... 고로 사용자 운영체제 언어셋은 안따라갈꺼같다.

    URL  http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/help.html?content=00001578.html

    Flash Player가 외부 텍스트 파일을 해석할 때 유니코드를 사용할지, Flash Player를 실행하는 운영 체제의 일반 코드 페이지를 사용할지를 지정하는 부울 값입니다.System.useCodepage의 기본값은 false입니다.

    • 이 속성을 false로 설정하면 외부 텍스트 파일이 유니코드로 해석됩니다. 이러한 파일은 저장 시 유니코드로 인코딩되어야 합니다.
    • 이 속성을 true로 설정하면 Flash Player를 실행하는 운영 체제의 일반 코드 페이지로 외부 텍스트 파일이 해석됩니다.

    System.useCodepage 에 대한 블로그 URL   http://blog.flashplatform.kr/195


    3) BOM (Byte Order Mark)

    URL  http://blog.wystan.net/2007/08/18/bom-byte-order-mark-problem

    BOM은 인코딩된 문서 첫 머리에 사용되어 정확한 인코딩 방식을 알려주는 역할을 하는데 대표적인 인코딩 방식과 그에 따른 BOM 목록은 아래 표와 같습니다.

    인코딩 방식Byte Order Mark(BOM)
    UTF-8EF BB BF
    UTF-16 Big EndianFE FF
    UTF-16 Little EndianFF FE
    UTF-32 Big Endian00 00 FE FF
    UTF-32 Little EndianFF FE 00 00

    예를 들어서 문서 처음 2개의 바이트가 FE FF로 시작되면 그 문서는 UTF-16 Big Endian으로 해석되고, 반대로 FF FE로 시작되면 UTF-16 Little Endian으로 해석되는 것이지요.

    그런데 UTF-8은 다른 인코딩 방식과는 다르게 BOM의 순서가 EF BB BF로 정해져 있습니다. 그래서 이 BOM은 바이트 순서와(Byte Order) 상관없기 때문에 UTF-8 Signature라고 불리지요. 즉, 해당 문서가 UTF-8로 인코딩되었다는 사실을 알리는 사인(signature)입니다.

    ~

    UTF-8은 인코딩 형식이 고정되어 있기 때문에 BOM이 없어도 인코딩 방식을 자동으로 알아낼 수 있습니다. 따라서 실제로는 BOM이 불필요하지요.

    하지만 일부 윈도우즈 프로그램(메모장 같은)은 UTF-8 파일을 생성할 때 자동으로 BOM을 집어넣습니다. 윈도우즈 환경에서는 눈에 띄지 않는 경우가 많지만 리눅스(LINUX)나 유닉스(UNIX) 환경에서는 많은 문제를 일으키는 원인이 되지요.


    'Programming' 카테고리의 다른 글

    subversion = svn  (0) 2016.02.26
    이렇게 편할수가! rz, sz  (0) 2014.10.13
    jquery.min.map Not Found..  (0) 2014.03.19

    댓글

Designed by Tistory.