PHP的MySQL MySQL编码问题

时间:2012-03-23 23:09:00

标签: php mysql encoding utf-8 character-encoding

我正在处理第三方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 collat​​ion。我在SO上看到了类似的问题并尝试了他们的解决方案,例如运行mysql_query('SET NAMES utf8')或更改列编码,但它们对我不起作用。

请告知。

1 个答案:

答案 0 :(得分:0)

问题是您的数据库默认只能使用Latin1编码。您将要将您的数据库或表格(我忘记哪些,可能两者)更改为UTF8。

你可以尝试

alter table TABLE_NAME charset utf8

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