PHP - MySQL для SimpleXML, обеспечить правильное кодирование - PullRequest
0 голосов
/ 24 октября 2011

Хорошо, я работаю над некоторыми плагинами для некоторых наших клиентов, которые в основном берут данные из своей базы данных MySQL и отправляют их нам. XML, созданный с помощью SimpleXML.

Теперь, когда мы получаем XML-файл, мы запускаем его через скрипт, помещая их данные в нашу базу данных, и тут возникает проблема.

Когда мы помещаем данные клиентов в нашу базу данных, в некоторых случаях некоторые символы преобразуются в китайские буквы. (Мы используем UTF-8)

Теперь я полагаю, что это можно решить, если бы у меня был способ определить кодировку базы данных клиентов, и преобразовать в UTF8 и дать XML-файлу заголовок <?xml version="1.0" encoding="UTF-8" ?>. Моя проблема заключается в том, чтобы определить кодировку, данную мне из базы данных клиентов, и правильно преобразовать ее в UTF-8.

Я посмотрел на php mb_detect_encoding() и mb_convert_encoding, но не уверен, насколько распространено расширение "Multibyte String", и я хотел бы сохранить совместимость плагина как можно выше.

Есть идеи, как мне лучше всего это сделать? Дайте мне знать, если вам нужна дополнительная информация.

РЕДАКТИРОВАТЬ: Хорошо, использование mysql_set_charset('UTF8') и установка SimpleXML в <?xml version="1.0" encoding="UTF-8" ?><xml/> делает работу, спасибо за помощь.

Принятие ответа daids, так как именно он привел меня к этому решению.

Ответы [ 2 ]

2 голосов
/ 24 октября 2011

Чтобы получить то, что возвращает кодировка MySQL:

    SHOW VARIABLES LIKE "character_set_database";
    SHOW VARIABLES LIKE "collation_database"; 

mqsoh's answer (/7557174/php-mysql-dlya-simplexml-obespechit-pravilnoe-kodirovanie) преобразует данные.

0 голосов
/ 24 октября 2011

В этом вопросе предлагается использовать iconv , расширение, которое по умолчанию включено в PHP.

...