我正在处理第三方XML,其中包含特殊字符,如项目符号,长短划线等。
示例XML:
$xml = "<xml><node>• Special Characters</node></xml>";
我的目标是使用PHP解析此XML并将其插入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 collation。我在SO上看到了类似的问题并尝试了他们的解决方案,例如运行mysql_query('SET NAMES utf8')
或更改列编码,但它们对我不起作用。
请告知。
答案 0 :(得分:0)
问题是您的数据库默认只能使用Latin1编码。您将要将您的数据库或表格(我忘记哪些,可能两者)更改为UTF8。
你可以尝试
alter table TABLE_NAME charset utf8
http://wolfram.kriesing.de/blog/index.php/2007/convert-mysql-db-to-utf8