다른 소스에서 다른 XML 파일을받는이 프로젝트에서 작업 중입니다. 내 PHP 스크립트는 그것들을 읽고, 구문 분석하고, mysql 데이터베이스에 저장해야한다.PHP : 간단한 XML과 다른 코드 페이지 및 데이터 가져 오기
XML 파일을 구문 분석하려면 PHP에서 SimpleXMLElement 클래스를 사용합니다. 벨기에에서 UTF-8 인코딩, 독일에서 iso-8859-1 인코딩, 체코에서 cp1250 등의 파일을받습니다.
XML 데이터를 SimpleXMLElement에 전달하고 이 객체에 asXML()을 사용하면 XML 데이터가 원래의 xml 파일과 동일하게 올바르게 표시됩니다. 필드를 PHP 변수에 할당하고이 변수를 화면에 인쇄하려고하면 텍스트가 손상된 것처럼 보이며 mysql 데이터베이스에 삽입 할 때 물론 손상됩니다.
예 :
는 XML :
가<?xml version="1.0" encoding="cp1250"?>
...
<name>Labe Dìèín - Rozb 741,85km ; Dìèín - Rozb 741,85km </name>
...
PHP 코드 (리눅스 배시 셸) 코드
$sxml = file_get_contents("test.xml");
$xml = new SimpleXMLElement($sxml);
//echo $xml->asXML() . "\n"; // content will show up correctly in the shell
$name = (string)$xml->ftm->fairway_section->geo_object->name;
echo $name . "\n";
결과 위쪽 후 인쇄물을 커서 이동 : BAN - Rozb 741,85km; DÄ (커서 움직임은 물론 PHP에서 인쇄 된 잘못된 문자와 관련이 있습니다)
PHP는 데이터를 UTF-8로 변환하여 문자열 매개 변수에 저장하므로 mb_convert_encoding을 사용하는 것으로 가정합니다. UTF-8에서 cp1250으로 변환하면 올바른 결과가 표시되지만 그렇지 않습니다. 또한 다른 모든 소스와 결합 할 수있는 형식으로 데이터를 저장할 수 있어야합니다.
인코딩/코드 페이지에 대해 많이 알지 못합니다. 아마도이 코드가 제대로 작동하지 않을 수 있습니다.하지만 내가 알고있는 것은 다른 언어의 텍스트를 복사/붙여 넣기하면 새로운 UltraEdit 파일은 모두 올바르게 표시됩니다. UltraEdit은 이것을 어떻게 처리합니까? 그것은 UTF-8을 사용합니까? (아무것도 표시 할 수 있습니까?)
데이터를 변환하여 소스의 인코딩과 상관없이 항상 표시되도록하려면 어떻게해야합니까? 대신
네,이 트릭을 않습니다. 그 차이점은 무엇입니까? – scippie