【问题标题】:About PHP XMLwriter() encoding input and output关于 PHP XMLwriter() 编码输入输出
【发布时间】:2013-10-03 12:24:02
【问题描述】:

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

例如这里:

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

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

【问题讨论】:

    标签: php xml character-encoding xmlwriter


    【解决方案1】:

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

    参见:

    【讨论】:

    • 对不起,它应该说: $xw->writeElement('garantie','Garantie à vie');所以,如果我理解正确,确保文本'Garantie à vie' 是 UTF-8 就足够了,然后 XMLWriter 输出将是我设置的编码?例如:$xw->startDocument('1.0','ISO-8859-1');
    • @Pato:是的,就是这样。包含'ISO-8859-1' 的第二个参数可以是大写或小写(通常使用大写)。可以使用的字符编码名称取决于您的 PHP 配置,ISO-8859-1 应该不会造成任何问题。
    • 同时评论说:我链接的演示站点 不支持 ISO-8859-1 - 不要问我为什么 :D 以前从未经历过,但正如所写,这取决于 PHP 配置。
    猜你喜欢
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 2022-08-21
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 2013-12-15
    相关资源
    最近更新 更多