-
FusionCharts (Flash) UTF-8 XML 인코딩, BOMProgramming 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
This should be the first output from this php.
echo pack("CCC",0xef,0xbb,0xbf);
?> - 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 whenmysql
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-8 EF BB BF UTF-16 Big Endian FE FF UTF-16 Little Endian FF FE UTF-32 Big Endian 00 00 FE FF UTF-32 Little Endian FF 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 - The php should output the BOM as shown in the code below: