Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于PHP XMLwriter()编码输入和输出_Php_Xml_Character Encoding_Xmlwriter - Fatal编程技术网

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

关于PHP XMLwriter()编码输入和输出,php,xml,character-encoding,xmlwriter,Php,Xml,Character Encoding,Xmlwriter,我一直在到处寻找关于XMLWriter()如何编码其输出的详细解释,但找不到它。我想知道如果我想要一个特定的输出编码,输入数据应该采用什么编码,例如ISO-8859-1。我应该以相同的格式给它输入数据吗 例如: $xw->writeElement('garantie','Garantie à vie'); *edited $xw->endElement(); 我应该对字符串“Garantieávie”进行任何编码转换还是XMLWriter()自动转换?字符串应该是ISO-8859-

我一直在到处寻找关于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编码字符串;):


加兰蒂à;争夺
另见:

  • 它回答了“XMLWriter使用writeAttribute()方法导出php XML的问题”。它还解释了如何更改输出文档的编码
  • 这个问题很好地涵盖了PHP中的有效元素名(UTF-8编码和其他)主题

对不起,应该是:$xw->writeElement('garantie','garantieávie');因此,如果我理解正确,确保文本“Garantieávie”是UTF-8格式就足够了,然后XMLWriter输出将是我设置的编码格式?例如:$xw->startDocument('1.0','ISO-8859-1')@帕托:是的,就是那样。包含
'ISO-8859-1'
的第二个参数可以是大写或小写(通常使用大写)。可以使用的字符编码名称取决于您的PHP配置,
ISO-8859-1
不应该造成任何问题。虽然评论说:我链接的演示站点不支持ISO-8859-1-不要问我为什么:D以前从未经历过,但正如所写,这取决于PHP配置。
<?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>