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

时间:2013-09-27 09:01:43

标签: php xml character-encoding xmlwriter

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

例如:

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

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

1 个答案:

答案 0 :(得分:2)

  

我应该对字符串'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>

参见: