在jsp页面中显示xhtml内容

在jsp页面中显示xhtml内容,jsp,xhtml,Jsp,Xhtml,我有一个显示XHTML内容的JSP页面。我已在JSP页面顶部包含以下行: <?xml version="1.0" encoding="UTF-8"?> <% response.setContentType("application/xhtml+xml"); %> <% request.setCharacterEncoding("UTF-8"); %> 如果我将上述行更改为: <?xml version="1.0" encoding="UTF-8"?

我有一个显示XHTML内容的JSP页面。我已在JSP页面顶部包含以下行:

<?xml version="1.0" encoding="UTF-8"?>
<% response.setContentType("application/xhtml+xml"); %>
<% request.setCharacterEncoding("UTF-8"); %>

如果我将上述行更改为:

<?xml version="1.0" encoding="UTF-8"?>
<% response.setContentType("application/xhtml+xml;charset=UTF-8"); %>
<% request.setCharacterEncoding("UTF-8"); %>

页面停止呈现并抛出XML解析错误,如“我的javascript中某处需要分号”或“未找到处理指令”等

从response.setContentType中删除“charset=utf-8”将使页面呈现。唯一的问题是→ 显示为questin标记“?”

页面停止呈现并抛出XML解析错误,如“我的javascript中某处需要分号”或“未找到处理指令”等

如果您将XHTML声明为XML而不是“具有XML语法的HTML”,则会发生这种情况。事实上,要摆脱XML声明。如果可以的话,我会更进一步,只使用HTML作为真正的HTML,即使用
或任何其他
HTML-strict
doctype。另见

顺便说一下,这也会隐式地为
内容类型
创建一个
标记。可以找到更多的背景信息和提示


希望这有帮助。

您可能有这样的代码:

<script type="text/javascript"> if (a && b) </script>
在任何版本的HTML或XHTML中都不允许。它必须始终写为:

<a href="foo?bar&amp;baz">


显然,您没有使用XML序列化程序生成页面(它不会让您创建无效的实体或不正确编码的字符),因此我建议您使用HTML 4 Strict或HTML5 as-
text/HTML
,这更适合手工编码的标记。

删除了request.setCharacterEndocding,包括在,页面呈现,但&rarr;仍然显示为问号。with字符集在XHTML中被设计忽略。它只适用于HTML(并且HTML在IE中假装为XML)。
<script type="text/javascript"> if (a && b) </script>
<a href="foo?bar&baz">
<a href="foo?bar&amp;baz">