Should I do any encoding conversion on the string 'Garantie à vie' or does the XMLWriter() convert it automatically?
XMLWriter
accepts UTF-8 string input in PHP and it will automatically re-encode it into the output encoding (if needed). This internal re-encoding is not always needed because an XML's default default encoding is UTF-8 already.
Should the string be in ISO-8859-1 or UTF-8?
The string should be UTF-8 encoded.
Example (with an UTF-8 encoded string; 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();
Output:
<?xml version="1.0" encoding="US-ASCII"?>
<garantie>Garantie à vie</garantie>
See as well:
- A more detailed explanation of XMLWriter character set encodings can be found in an earlier answer which was answering the "php XML export issue with XMLWriter using writeAttribute() method" question. It also explains how to change the encoding of the output document.
- The question How to check if string is a valid XML element name? covers the topic of valid element names in PHP (UTF-8 encoded and other) quite well.