我使用 Jetty(通过非常方便的码头跑者) 用于日常 Web 应用程序测试。我最近偶然发现的一件事是,我并不总是在“Content-Type”响应标头中得到字符集调用。我做响应我的应用程序的 XMLHttpRequest 事务来获取它,但不是针对通过<a>
链接或其他方式加载的普通旧页面。
我读过一些关于如何设置 Jetty 配置文件的文章,但我始终无法完全理解;所有 servlet 容器都很复杂,而 Jetty 虽然很简单,但它很奇怪,我无法理解整体思路。因此,我启动应用程序时所做的就是运行 Jetty Runner .jar 文件,并使用几个简单的参数来设置端口号和日志文件路径,然后我只需给它运行 .war 文件即可。它运行良好 — 除了缺少字符集 :-)
有人有一个可以解决这个问题的快速示例配置文件吗?
编辑— 哦,如果这很重要的话,我正在运行 Jetty 7.0.0 RC3;我也尝试过稍新的版本(仍然是 7.something),但问题完全相同。我所有的测试都在 Ubuntu 上进行。
答案1
这不一定是 Jetty/Jetty Runner 的问题。Jetty 是 Servlet 容器,而响应是由 servlet(或最终实现 servlet 的更高层的东西)生成的。如果不知道您在 Jetty 之上使用什么来生成内容,就很难说。
您可以做的一件事是使用元标记在 HTML 本身中明确定义您的字符集。HTML5 简化了如何执行此操作:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Example document</title>
</head>
<body>
<p>Example paragraph</p>
</body>
</html>
与以前的 HTML 语法相反:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Example document</title>
</head>
<body>
<p>Example paragraph</p>
</body>
</html>