【问题标题】:Export array to XML file - problem with utf-8 encoding将数组导出到 XML 文件 - utf-8 编码问题
【发布时间】:2021-05-23 12:03:17
【问题描述】:

我想在 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);

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

【问题讨论】:

    标签: php xml utf-8 export


    【解决方案1】:

    那是因为您加载了一个 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>
    

    【讨论】:

      猜你喜欢
      • 2015-11-04
      • 2019-02-25
      • 2017-07-16
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多