我一直在到处寻找有关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 à vie</garantie>
另请参阅:
- 有关XMLWriter字符集编码的更详细的解释可以在前面的答案中找到,该答案回答了"使用writeAttribute((方法使用XMLWriter的php XML导出问题"问题。它还说明了如何更改输出文档的编码。
- 问题如何检查字符串是否是有效的XML元素名称?很好地涵盖了PHP中的有效元素名称(UTF-8编码和其他(的主题。