PHP SimpleXML asXML пишет ANSI-кодированный файл

Я пытаюсь написать некоторый контент в XML-файл, но у меня проблемы со специальными символами.

Содержимое, которое я хотел бы написать, передается скрипту через $_GET , поэтому я предполагаю, что он правильно декодирован в содержимое UTF-8.

 $write = $_GET['content']; 

будет подаваться как:

 file.php?content=s%F6per 

В PHP я делаю следующее:

 $xml = simplexml_load_file('file.xml'); $newentry = $xml -> addChild('element',$write); $xml -> asXML($xml_filename); 

Открываемый XML-файл кодируется в кодировке UTF-8. Когда я пишу контент без каких-либо из этих «проблемных символов», asXML снова сохранит файл в UTF-8. Как только я вставляю специальные символы, он сохраняется в кодировке ANSI, испортил файл, так как я не смогу его открыть (скрипт будет жаловаться на неправильное кодирование).

Что мне не хватает? Чтение руководства дает мне впечатление, что я должен делать все нормально (т. Е. Не возиться с $_GET['content'] ), поэтому, к сожалению, я не знаю.

Спасибо!

ваши специальные символы не выглядят UTF-8, но символ ISO-8859-1

см. здесь – http://www.degraeve.com/reference/urlencoding.php

Возможное решение

 $newentry = $xml->addChild('element', htmlentities($write)); 

Или

 $newentry = $xml->addChild('element', iconv('ISO-8859-1', 'UTF-8', $write)); 

И вне темы, пожалуйста, избегайте использования $_GET чтобы что-то писать в файл или вставлять в базу данных, является рискованным