2012-03-23 5 views
1

Я имею дело с третьей стороной 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') или изменение кодировки столбцов, но они не работали для меня.

Просьба сообщить.

+1

Где '$ xml' пришли и whar заставляет вас думать, что вам нужно' utf8_encode() '? –

+0

Есть ли у вас какое-либо представление о кодировке вашего xml? Ваш стол должен быть также на utf8. – haltabush

+0

Вы пытались установить сопоставление БД на 'utf8_general_ci' или что-то в этом роде? – hohner

ответ

0

Проблема заключается в том, что ваша база данных работает только с кодировкой Latin1 по умолчанию. Вы захотите изменить свою базу данных или таблицу (я забуду, что, возможно, и то, и другое), кодирование в UTF8.

Вы можете попробовать

alter table TABLE_NAME charset utf8 

http://wolfram.kriesing.de/blog/index.php/2007/convert-mysql-db-to-utf8

Смежные вопросы