关于 PHP XMLwriter() 编码输入和输出


About PHP XMLwriter() encoding input and output

我一直在到处寻找有关XMLWriter((如何编码其输出但找不到的详细说明。如果我想要特定的输出编码,例如 ISO-8859-1,我想知道输入数据应该采用什么编码。我应该以相同的格式给它输入数据吗?

例如这里:

$xw->writeElement('garantie','Garantie à vie'); *edited
$xw->endElement();

我应该对字符串"Garantie à vie"进行任何编码转换,还是XMLWriter()自动转换它?字符串应采用 ISO-8859-1 还是 UTF-8?

我应该对字符串"Garantie à vie"进行任何编码转换,还是XMLWriter((会自动转换它?

XMLWriter接受 PHP 中的 UTF-8 字符串输入,并会自动将其重新编码为输出编码(如果需要(。并不总是需要这种内部重新编码,因为 XML 的默认默认编码已经是 UTF-8。

字符串应采用 ISO-8859-1 还是 UTF-8?

字符串应采用 UTF-8 编码。

示例(使用 UTF-8 编码字符串;演示(:

<?php
/**
 * About PHP XMLwriter() encoding input and output
 *
 * @link https://stackoverflow.com/a/19046825/367456
 * @link https://eval.in/51120
 */
$xmlWriter = new XMLWriter();
$xmlWriter->openMemory();
$xmlWriter->startDocument('1.0', 'US-ASCII');
$xmlWriter->writeElement('garantie', 'Garantie à vie');
$xmlWriter->endDocument();
echo $xmlWriter->flush();

输出:

<?xml version="1.0" encoding="US-ASCII"?>
<garantie>Garantie &#224; vie</garantie>

另请参阅:

  • 有关XMLWriter字符集编码的更详细的解释可以在前面的答案中找到,该答案回答了"使用writeAttribute((方法使用XMLWriter的php XML导出问题"问题。它还说明了如何更改输出文档的编码。
  • 问题如何检查字符串是否是有效的XML元素名称?很好地涵盖了PHP中的有效元素名称(UTF-8编码和其他(的主题。