QUERY和CDATA输出使用中的MYSQL REPLACE仍会导致XML损坏

时间:2014-03-08 14:16:22

标签: php mysql xml

我有一个PHP脚本,用于查询MySQL数据库并以XML格式输出显示该信息。

我有一个麻烦的专栏,我无法控制(我只能选择)。此列填充了字符返回等。

在MySQL查询中,我尝试在此列上使用REPLACE,如下所示:

REPLACE(PropertyInformation, '\r\n', '') AS PropertyInformation

在PHP脚本中,我还将导出的XML包装在CDATA中,因为我被告知这可能会有所帮助,如下所示:

<Description><![CDATA[' . $PropertyInformation . ']]></Description>

我也在脚本中形成这样的XML:

header("Content-Type: text/xml;charset=UTF-8");
echo '<?xml version="1.0" encoding="UTF-8"?>

1 个答案:

答案 0 :(得分:1)

由于您的数据不是UTF-8,即使您声称它是(<?xml version="1.0" encoding="UTF-8"?>

,结果也会被破坏

您需要将数据转换为此格式。

有三种方法可以做到,

  1. 将您在数据库中的数据转换为UTF-8或
  2. 转换选择语句,或
  3. 在PHP中将数据转换为UTF-8,将数据保留在数据库中。
  4. 您可以通过转储数据库,向其发出iconv转换命令并将其导回来做第一个选项。

    第二,您将使用SELECT CONVERT(latin1column USING utf8) ...

    第三,你会再次使用iconv,假设你的数据是ISO-8859-1:$converted = iconv("ISO-8859-1", "UTF-8", $text);