해당 문자열의 캐릭터셋을 모르는 경우에는 mb_detect_encoding() 함수를사용 하면 된다.
string mb_detect_encoding ( string $str [, mixed $encoding_list = mb_detect_order() [, bool $strict = false ]] )
<?
$xml_string = file_get_contents($_SERVER['DOCUMENT_ROOT'].'/data.xml');
$enc = mb_detect_encoding($xml_string, array('EUC-KR', 'UTF-8', 'shift_jis', 'CN-GB'));
if($enc != 'UTF-8'){
$xml_string = iconv($enc, 'UTF-8', $xml_string); //본인 사이트에 맞는 인코딩으로 변경
}
$xml = simplexml_load_string($xml_string);
?>
해당 함수에서 사용되는 캐릭터셋의 종류는 mb_list_encodings() 함수를 쓰면 배열로 리턴되어 알 수 있다.
함수의 결과
Array
(
[0] => pass
[1] => auto
[2] => wchar
[3] => byte2be
[4] => byte2le
[5] => byte4be
[6] => byte4le
[7] => BASE64
[8] => UUENCODE
[9] => HTML-ENTITIES
[10] => Quoted-Printable
[11] => 7bit
[12] => 8bit
[13] => UCS-4
[14] => UCS-4BE
[15] => UCS-4LE
[16] => UCS-2
[17] => UCS-2BE
[18] => UCS-2LE
[19] => UTF-32
[20] => UTF-32BE
[21] => UTF-32LE
[22] => UTF-16
[23] => UTF-16BE
[24] => UTF-16LE
[25] => UTF-8
[26] => UTF-7
[27] => UTF7-IMAP
[28] => ASCII
[29] => EUC-JP
[30] => SJIS
[31] => eucJP-win
[32] => SJIS-win
[33] => CP51932
[34] => JIS
[35] => ISO-2022-JP
[36] => ISO-2022-JP-MS
[37] => Windows-1252
[38] => ISO-8859-1
[39] => ISO-8859-2
[40] => ISO-8859-3
[41] => ISO-8859-4
[42] => ISO-8859-5
[43] => ISO-8859-6
[44] => ISO-8859-7
[45] => ISO-8859-8
[46] => ISO-8859-9
[47] => ISO-8859-10
[48] => ISO-8859-13
[49] => ISO-8859-14
[50] => ISO-8859-15
[51] => ISO-8859-16
[52] => EUC-CN
[53] => CP936
[54] => HZ
[55] => EUC-TW
[56] => BIG-5
[57] => EUC-KR
[58] => UHC
[59] => ISO-2022-KR
[60] => Windows-1251
[61] => CP866
[62] => KOI8-R
[63] => ArmSCII-8
)