2014-02-14 10 views
1

포스트 스크립트 양식의 스풀이 될 XML을 작성하고 있습니다.XML의 문자 인코딩을 수정했습니다.

사람들이 DASH (아마 복사 형태로 MS 워드) EN 문자, 내가 offending command: xmlerror. Stack: unicode not supported yet ....

http://www.fileformat.info/info/unicode/char/2013/index.htm

코드의 관련 부분이 얻을 삽입 할 때마다

:

$xml = new SimpleXMLElement('<xml/>'); 
foreach($_POST as $key => $value) { 
    $xml->$key = $value: 
} 
$dom = new DOMDocument('1.0'); 
$dom->preserveWhiteSpace = false; 
$dom->formatOutput = true; 
$dom->loadXML($xml->asXML()); 
$nombreArchivoTemporal = '/tmp/'.time().rand(); 
$archivo = fopen ($nombreArchivoTemporal, "wb"); 
fwrite ($archivo, iconv('UTF-8', 'CP1252//TRANSLIT//IGNORE', "@PBSSFORM DNDA\n" . $dom->saveXML())); 
fclose ($archivo); 

사실은이다 ÄËÏÖÜáéíóú, etc 문자가 지원되지만 그 문자는 EN DASH이며 다른 문자는 지원되지 않을 수 있습니다. 문자가 이미으로 나는 iconv 기능 그들을 제거하기 위해 노력하고있어 있지만 작동하지 않는 HTML 엔티티 내가 $xml에 삽입 할 때 인코딩 :

<?xml version="1.0"?> 
<xml> 
<date/> 
    <tituloObra>&#xE1;&#xE9;&#xED;&#xF3;&#xFA;&#xC1;&#xC9;&#xCD;&#xD3;&#xDA;&#xE4;&#xEB;&#xEF;&#xF6;&#xFC;&#xC4;&#xCB;&#xCF;&#xD6;&#xDC; &#x2013; &lt;= gui&#xF3;n</tituloObra> 

&#x2013;가 문제가있는 문자입니다.

답변

0

문제는 SimpleXML과 관련이 있습니다. 나는 CP1252에 SimpleXML을 변환 모든 노력을했지만, 내가 DOMDocument->loadXML에 넣기 할 때, 나는 항상 Illegal character... 오류

있어 내가 직접 새로운 기록을 DOMDocument 클래스를 사용하여 생성자에서 CP1252을 지정하고 삽입을 교체 한

UTF8.

DOMDOcument->Save()을 호출하면 PostScript에 언급 된 오류를 피하면서 해당 파일을 CP1252로 자동 인코딩합니다.

2

EN DASH U + 2013 CP1252에 존재합니다. 이름 CP1252는 공통이지만 IYA 레지스트리에 정의 된 windows-1252의 비공식 이름으로 0x95는 U + 2013을 나타냅니다.