哪位大侠对jetty比较熟悉,编码错误,请指教

hebeijpp 发布于 2011/11/24 21:06
阅读 4K+
收藏 1

http://localhost:8080/luceneSearch/SearchServlet?keyword=英语

在地址栏输入上面url会有下面的错误,嗨,弄了好久了还没解决。但是我把上面的“英语”换成“english”就会正常显示。在tomcat中地址栏输入中文就没有问题,怎么jetty这么脆弱呀,谁给帮忙解决一下,先谢谢了。

HTTP ERROR 500

Problem accessing /luceneSearch/SearchServlet. Reason:

    !utf8

Caused by:

java.lang.IllegalArgumentException: !utf8
	at org.eclipse.jetty.util.Utf8StringBuilder.append(Utf8StringBuilder.java:122)
	at org.eclipse.jetty.util.UrlEncoded.decodeUtf8To(UrlEncoded.java:295)
	at org.eclipse.jetty.http.HttpURI.decodeQueryTo(HttpURI.java:561)
	at org.eclipse.jetty.server.Request.extractParameters(Request.java:211)
	at org.eclipse.jetty.server.Request.getParameter(Request.java:655)
	at lucene.seach.SearchServlet.doPost(SearchServlet.java:41)
	at lucene.seach.SearchServlet.doGet(SearchServlet.java:28)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:530)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:426)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:118)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:458)
	at org.eclipse.jetty.server.session.SessionHandler.handle(SessionHandler.java:179)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:930)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:361)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:864)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:116)
	at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:243)
	at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:112)
	at org.eclipse.jetty.server.Server.handle(Server.java:337)
	at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:552)
	at org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:979)
	at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:533)
	at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:203)
	at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:399)
	at org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:437)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:435)
	at java.lang.Thread.run(Unknown Source)

以下是问题补充:

@hebeijpp:那些中文参数是在地址栏中直接写上的。 好像SearchServlet不接收中文参数 (2011/11/24 21:10)
加载中
0
$
$龙卷风$

我也碰到了这个问题,修改办法是:

在start.ini中增加JVM启动参数:-Dorg.eclipse.jetty.util.URI.charset=GBK

hebeijpp
hebeijpp
此乃高人呀,小弟佩服!
0
红薯
红薯
居然报错了,tomcat 顶多就是乱码而已
0
无量
无量
看看这个吧,希望能帮到你。。最后一条有说哦,看看你的浏览器编码是不是gbk的
hebeijpp
hebeijpp
IE浏览器接受参数应当默认是GBK,可是在这好像servlet就不接受中文参数,应当是jetty没搞懂。
0
hebeijpp
hebeijpp
是呀,地址栏输入“英语”的utf-8编码:"%E8%8B%B1%E8%AF%AD“就可以了,好像servlet就不接受中文字符,但是换了tomcat就接受了,我想应当把某个地方设置一下,嗨,试了好多次了,还是不见效,不知该怎么弄了
0
无量
无量
你把浏览器的编码设置为utf-8试试
0
杨子江
杨子江
servlet 中 用response的writer输出中文时,jetty也比tomcat容易乱码 。。。  
返回顶部
顶部