读书人

解决地址栏传输中文有关问题

发布时间: 2012-12-27 10:17:10 作者: rapoo

解决地址栏传输中文问题

一、传统的方法,修改tomcat/conf/server.xml文件找到如下位置:
??? <Connector port="8080"……这个位置,在末尾加上一段 URIEncoding="GBK"
??? 例:<Connector port="8080"……disableUploadTimeout="true" URIEncoding="GBK"/>

二、修改处理编码的过滤器。
例:CharFilter.java

??? public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws    ??????? IOException, ServletException {

??? ??? HttpServletRequest req = (HttpServletRequest) request;
??? ???
??????? //通过这里转换后过滤,过滤器的配置在web.xml中不变
??? ??? if (req.getMethod().equalsIgnoreCase("get")) {
??? ??? ??? this.encoding(req);
??? ??? }
??? ???
??? ??? request.setCharacterEncoding(encoding);
??? ??? response.setCharacterEncoding(encoding);
??? ??? chain.doFilter(request, response);
??? ???
??? }

???
??? private void encoding(HttpServletRequest request) {
??? ??? Iterator iter = request.getParameterMap().values().iterator();
??? ??? while (iter.hasNext()) {
??? ??? ??? String[] parames = (String[]) iter.next();
??? ??? ??? for (int i = 0; i < parames.length; i++) {
??? ??? ??? ??? try {
??? ??? ??? ??? ??? parames[i] = new String(parames[i].getBytes("iso8859-1"),
??? ??? ??? ??? ??? ??? ??? "GBK");
??? ??? ??? ??? } catch (Exception e) {
??? ??? ??? ??? ??? e.printStackTrace();
??? ??? ??? ??? }
??? ??? ??? }
??? ??? }

??? }

个人喜欢用第二种方法,因为当你的工程做好后要在别人机器上运行时,就不用去更改这些tomcat的配置了。

?

?

?

来自:http://blog.sina.com.cn/s/blog_6145ed810100hfyr.html

读书人网 >编程

热点推荐