2010-03-10 5 views
2

원본 XML 선언에 다른 인코딩이있는 경우 SimpleXML이 모든 텍스트를 UTF-8로 변환합니다. 결과 SimpleXMLElement의 모든 텍스트는 자동으로 UTF-8 형식이됩니다. 내가 정상 출력을 얻을 않도록 무엇을해야simplexml_load_file 및 인코딩 문제

<?xml version="1.0" encoding="windows-1251" ?> 

: 소스 내 경우

은 자명 한 일 입니 다음과 같은 XML을 가지고? 왜냐하면, 당신이 상상할 수 있듯이, 지금 당장 나는 상징을 얻습니다.

감사합니다.

답변

0

아마도 어리석은 대답이지만 SimpleXML을 사용하지 마십시오. DOM 만 사용하십시오.

+0

어떻게 dom을 대신 사용합니까? – Codex73

0

인코딩을 변환하려면 iconv을 사용해보세요.

+0

예제 코드를 잘랐다면 유용 할 것입니다. – slashingweapon

0

한 코드에서 다른 코드로 변환 할 수있는 iconv() 함수를 사용하면 TRANSLIT 옵션이 작동 할 수 있습니다.

$xml = {STRING CONTAINING YOUR XML FILE DATA}; 

<?php 

// convert string from utf-8 to iso8859-1 
//$xml = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $xml); 
$xml = iconv("YOUR_ENCODING", "UTF-8//TRANSLIT", $xml); 

?> 
0

제 조언은 소스 .php 파일 인코딩과 (가능한 경우) 출력 인코딩으로 UTF-8을 사용하는 것입니다. gzip 압축을 사용하면 windows-1251과 UTF-8 응답 (대부분 키릴 문자)의 크기 차이가 거의없고 UTF-8이 여러면에서 더 좋습니다. 당신이 말했듯이, simplexml은 xml 가져 오기에서 windows-1251을 UTF-8로 변환합니다. 그런 다음 인코딩에 대해 걱정할 필요가 없습니다.

하면 출력이 다음과 같이 사용을 위해 창-1251을 사용하는이 경우 iconv_set_encoding ("internal_encoding를", "UTF-8"); iconv_set_encoding ("output_encoding", "windows-1251"); ob_start ("ob_iconv_handler");

PHP 소스 파일의 UTF-8에 대한 한 가지 추측은 정규식의 char 클래스입니다. /[ю]/은 예상대로 작동하지 않습니다. /(ю)/.