不能正常搜索中文的原因是,mvnForum使用GET方法提交搜索请求,所以搜索参数是通过QueryString传递的。而mvnForm在传递之前先用UTF-8进行了URL Encode,所以在接收参数是也应该用UTF-8进行URL Decode。问题出在Tomcat缺省认为URI编码是ISO-8859-1,所以在程序中使用request.getParameter读取参数时,会自动根据ISO-8859-1进行URL Decode,导致错误。解决办法如下:
方法一:
修改$TOMCAT/conf/server.xml文件,在HTTP Connector或者AJP Connector的配置加上URIEncoding="utf-8"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="utf-8" /> enableLookups="false" redirectPort="8443" protocol="AJP/1.3" URIEncoding="utf-8"/>
方法二:
使用useBodyEncodingForURI="true". 这个方法适合你的TOMCAT实例下需要跑多个不同Encoding的程序时。
maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" useBodyEncodingForURI="true" /> enableLookups="false" redirectPort="8443" protocol="AJP/1.3" useBodyEncodingForURI="true" />
参考:http://www.javaedu.com |