没有Charset的Jetty响应

时间:2009-02-09 12:48:03

标签: java jetty response character-encoding

我正在使用Jetty测试我们拥有的Web服务,并且我试图让它在内容类型标题下没有字符集进行响应。

有谁知道怎么做?

我尝试拦截响应并将CharacterEncoding设置为null或“”,但这会产生异常。

我正在使用Jetty 6.1.6。

3 个答案:

答案 0 :(得分:3)

我认为这不是你使用哪个servlet容器的问题,而是你在servlet中对响应做了什么。如果通过使用参数null""调用ServletResponse的setContentType(2.3)或setCharacterEncoding(2.4,2.5)来设置字符编码,它应该可以工作(没有尝试自己)。但是一定要在调用getWriter之前调用上面的方法,否则设置编码will have no effect

答案 1 :(得分:1)

我现在尝试了自己,但是我必须承认,我的码头是一个非常古老的码头(4.2。但是按照我需要的方式完成所有事情)。我把它比作tomcat(4.1.29,也是旧的)。我使用以下代码检查了内容类型:

URL tomcatUrl = new URL("http://localhost:18080/ppi/jobperform/headertest")//tomcat;
URLConnection tconnect = tomcatUrl.openConnection();
System.out.println("tomcat: " + tconnect.getContentType());


URL jettyUrl = new URL("http://localhost:13818/ppi/jobperform/headertest")//jetty;
URLConnection jconnect = jettyUrl.openConnection();
System.out.println("jetty: " + jconnect.getContentType());

结果如下:

Servlet代码:

    response.setContentType("");
    response.getWriter().write("Return");

=>
tomcat :; charset = ISO-8859-1
码头:

Servlet代码:

     response.setContentType("text/plain");
     response.getWriter().write("Return");

=>
tomcat:text / plain; charset = ISO-8859-1
jetty:text / plain

Servlet代码:

response.setContentType("text/plain;charset=UTF-8");
response.getWriter().write("Return");

=>
tomcat:text / plain; charset = UTF-8
jetty:text / plain; charset = UTF-8

所以看起来旧的码头完全符合你的要求,而tomcat则是从新码头做的。

答案 2 :(得分:0)

charset是非常有用的信息。 而不是试图强迫一个好的产品(Jetty)做错事我宁愿尝试教服消费者做正确的事情(识别并尊重charset)。