将数组导出到 XML 文件 - utf-8 编码问题

Export array to XML file - problem with utf-8 encoding

我想将数组导出到 PHP 中的 XML 文件:

$fxml = fopen('file.xml', 'w');
$xml = new SimpleXMLElement('<postal_codes/>');

$rows = $db->query('SELECT * FROM postal_codes ORDER BY ID');

foreach ($rows as $row) {
  if ($provinces[$row['region']] == 'test') {
    $place = $xml->addChild('place');
    foreach($fields as $key => $val) {
      $place->addChild($val, $row[$val]);
    }
  }
}

fwrite($fxml, $xml->asXML());
fclose($fxml);

数据已导出,但值不包含波兰语字符,例如:ń、ś、ł、ó 等。如何解决此问题?我没有正确的字符,而是:&#x15B; &#x144; &#x119;

那是因为您加载了一个 ASCII XML 文档。如果您提供 UTF-8 编码,它将不会对 unicode 字符进行编码。

$data = "Witaj świecie";

$xml = new SimpleXMLElement("<postal_codes/>");
$xml->addChild("place", $data);

echo $xml->asXML();

$xml = new SimpleXMLElement(
    "<?xml version='1.0' encoding='utf-8'?>\n<postal_codes/>"
);
$xml->addChild("place", $data);

echo $xml->asXML();

输出:

<?xml version="1.0"?>
<postal_codes><place>Witaj &#x15B;wiecie</place></postal_codes>
<?xml version="1.0" encoding="utf-8"?>
<postal_codes><place>Witaj świecie</place></postal_codes>