Я имею дело с третьей стороной XML, который содержит специальные символы, такие как пули, длинный тир и т.д.PHP проблема кодирования MySQL с XML
Примера XML:
$xml = "<xml><node>• Special Characters</node></xml>";
Моей цели разобрать этот XML используя PHP и вставляем его в базу данных MySQL. Я использую DomDocument
для анализа XML, чтобы получить объект SimpleXMLElement
с узла DOM, используя simplexml_import_dom
.
Метод загрузки DomDocument
сбой, если я не использую utf8_encode для кодирования xml.
$doc = new DOMDocument();
$doc->loadXML(utf8_encode($xml));
Чтобы иметь возможность разобрать XML, я понимаю, что мне нужна функция utf8_encode
. После того, как вы сможете анализировать XML, вставки в таблице MySQL приведут к появлению специальных символов? или мусора. Даже специальные символы из XML, отображаемые в браузере после разбора, будут мусором.
Столбец таблицы MySQL имеет текстовый тип данных и находится в настройке latin1_swedish_ci. Я видел похожие вопросы о SO и пробовал их решения, например, запуск mysql_query('SET NAMES utf8')
или изменение кодировки столбцов, но они не работали для меня.
Просьба сообщить.
Где '$ xml' пришли и whar заставляет вас думать, что вам нужно' utf8_encode() '? –
Есть ли у вас какое-либо представление о кодировке вашего xml? Ваш стол должен быть также на utf8. – haltabush
Вы пытались установить сопоставление БД на 'utf8_general_ci' или что-то в этом роде? – hohner