3

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

例如这里:

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

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

4

1 回答 1

3

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

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

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

字符串应该是 UTF-8 编码的。

示例(使用 UTF-8 编码的字符串;Demo):

<?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>

另见:

于 2013-09-27T09:04:02.333 回答