Я пытаюсь написать некоторый контент в 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
чтобы что-то писать в файл или вставлять в базу данных, является рискованным