在jsp页面中显示xhtml内容
我有一个显示XHTML内容的JSP页面。我已经包含在我的JSP页面的顶部以下行:在jsp页面中显示xhtml内容
<?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,即使用<!doctype html>
或任何其他HTML strict
文档类型。另见http://hsivonen.iki.fi/doctype/。
<% request.setCharacterEncoding("UTF-8"); %>
首先细节是,request.setCharacterEncoding("UTF-8")
是远远多余的。在这个阶段,现在已经太迟了。第二个细节是你正在使用scriptlets。我建议不要这样做。在适当的地方使用taglibs/EL。如果这是不可能的,那么代码逻辑实际上属于Java类,直接或间接地在Servlet或Filter类中。
从response.setContentType中删除“charset = utf-8”会使页面呈现。唯一的问题是→显示为一个questin标记“?”
的response.setContentType(..)
是多余的,如果你已经将它作为HTML <head>
这是恕我直言,干净多了一个<meta>
标签。
最后,您还需要设置响应字符编码(这是自定的内容类型不同!)如下:
<%@ page pageEncoding="UTF-8" %>
这顺便也隐式创建为content-type
一个<meta>
标签。更多的背景信息和提示可以在here找到。
希望这会有所帮助。
你可能有这样的代码:
<script type="text/javascript"> if (a && b) </script>
这是禁止在XHTML模式,但需要text/html
模式。你会在Sending XHTML as text/html Considered Harmful找到这个问题的解释。
和代码,如:
<a href="foo?bar&baz">
没有在HTML或XHTML的任何版本允许的。它必须始终写为:
<a href="foo?bar&baz">
显然你不使用XML串行器(它不会让你创建无效实体或不正确的编码字符)生成页面,因此,我建议你使用HTML 4严格或取而代之的是HTML5-as-text/html
,它们更适合手写编码标记。
删除了request.setCharacterEndocding,包括在
下,页面呈现但→仍显示为问号。 – 2009-11-18 19:37:30我编辑了我的答案,如何正确设置响应编码。在设计中XHTML中忽略带字符集的 – BalusC 2009-11-18 20:31:55
。它只适用于HTML(并且在IE中使用HTML伪装成XML)。 – Kornel 2009-11-18 21:05:16