【问题标题】:xml version 1.0 encoding utf-8 in php?xml 版本 1.0 在 php 中编码 utf-8?
【发布时间】:2010-12-26 06:15:21
【问题描述】:

xml 1.0 版在 php 中编码 utf-8,我试过了:

echo '<?xml version="1.0" encoding="utf-8"?>';

但这在 w3c 上无效,在 xhtml 中使用时,php 显示错误。

解决此问题的最简单方法是什么?通过它验证

谢谢

w3c 上的错误:

第 5 行,第 46 列:序言中不允许使用字符“'”

echo '<?xml version="1.0" encoding="utf-8"?>';

第 5 行,第 45 列:XML 解析错误:需要开始标记,未找到“

echo '<?xml version="1.0" encoding="utf-8"?>';

php 错误:

解析错误:语法错误,第 7 行 /home/public_html//request.php 中出现意外的 T_STRING

<?php 
session_start();
include ('../connection.php');
include ('../functions.php');
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
?>

【问题讨论】:

  • "this doesn't validate on w3c" - 错误信息是...?
  • 我们需要查看 (a) 源和 (b)(可能)输出以告诉您出了什么问题。说它“显示错误”没有帮助。什么样的错误?您收到错误消息吗?它会让你的电脑爆炸吗?
  • 对于 1.0 版和 UTF-8,您不需要包含 XML 声明。这些是默认值,如果它们缺失则隐含。 XML 声明完全没有价值,除非您使用 XML 1.1(几乎没有人需要)或非 UTF-8 编码(尽可能避免使用)。它所做的只是让 IE 在 XHTML-as-HTML 中进入 Quirks 模式。

标签: php xml validation


【解决方案1】:

问题在于您的 php.ini 中的 short_open_tag = On

【讨论】:

  • 是否可以在不访问 php.ini 的情况下关闭这些功能?
  • 我相信 short_open_tag 是不可通过 ini_set() 更改的,您必须直接访问 php.ini
【解决方案2】:

我倾向于同意@just,这可能与short_open_tag = On 有关。以下是一些解决此问题的方法。

您可以将标签分成几块(简短、温馨、简单,但必须为每个实例都这样做):

echo '<'.'?xml version="1.0" encoding="utf-8"?'.'>';

您可以直接修改php.ini(永久和整体,我认为最好的解决方案,但它需要修改php.ini 的IIS ication 并重新启动Apache)。

或者,您可以使用 htaccess to define the ini setting for you. 这解决了大多数问题 w/1 和 2,但它需要 Apache(我不知道如何让 IIS 来完成这项工作)

【讨论】:

    【解决方案3】:

    您是否在脚本开头添加了&lt;?php 标记?

    <?php
    echo '<?xml version="1.0" encoding="utf-8"?>';
    ?>
    

    【讨论】:

    • 是的,它确实通过回显它没有通过并且它需要到:p
    • 在经过验证的源代码中肯定没有提及
    • 脚本的第一行是什么样的?如果第一行是一个 XML 声明并且 short_open_tags 处于打开状态,那么您将收到一个解析错误。
    • 我的猜测是,其中一个包含的文件缺少一个结束 ?&gt; 标记,而不是一个开始 &lt;?php。错误出现在未显示的代码中,因为问题中的代码示例很好。
    • 脚本没有问题....它的 w3c 验证器在我回显 xml 版本时发现错误/
    【解决方案4】:

    根据您的错误消息,很抱歉,如果这是居高临下的,但是您的代码是否包含在 PHP 开始和结束标记中?

    也就是说,你的文件是这样的吗?

    <?php
    echo '<?xml version="1.0" encoding="utf-8"?>';
    ?>
    

    或者只是这个?

    echo '<?xml version="1.0" encoding="utf-8"?>';
    

    【讨论】:

    • 是的,它的包装,大部分是 xhtml 我只是开始/结束我需要包含 php 的 php 标签。
    猜你喜欢
    • 1970-01-01
    • 2011-05-09
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    • 2011-03-16
    • 2012-08-02
    • 1970-01-01
    相关资源
    最近更新 更多