首先把resin的缺省编码设为UTF-8:
<log id='/' href='stderr:' timestamp="[%H:%M:%S.%s]"/>
<web-app character-encoding='UTF-8'>
....
<servlet>
<servlet-name>character</servlet-name>
<servlet-class>com.chedong.weblucene.CharacterEncodingTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>character</servlet-name>
<url-pattern>/character</url-pattern>
</servlet-mapping>
....
</web-app>
然后访问
http://localhost:8080/weblucene/search?encoding=UTF-8&q=%E5%8C%97%E4%BA%AC,在resin 的log 中你会发现:
[19:10:52.484] java.io.CharConversionException: illegal utf8 encoding
at com.caucho.vfs.i18n.UTF8Reader.read(UTF8Reader.java:102)
at com.caucho.vfs.ByteToChar.readChar(ByteToChar.java:179)
at com.caucho.vfs.ByteToChar.getConvertedString(ByteToChar.java:126)
at com.caucho.server.http.Form.parseQueryString(Form.java:100)
at com.caucho.server.http.Request.parseQuery(Request.java:1352)
at com.caucho.server.http.Request.getParameterValues(Request.java:1449)
at com.caucho.server.http.Request.getParameter(Request.java:1459)
at com.chedong.weblucene.CharacterEncodingTest.doGet(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:126)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
at com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:96)
at com.caucho.server.http.Invocation.service(Invocation.java:315)
at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:135)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:246)
at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:163)
at com.caucho.server.TcpConnection.run(TcpConnection.java:139)
at java.lang.Thread.run(Thread.java:536)