详解:

http://www.360doc.com/content/10/0815/14/2736180_46209475.shtml

老是碰到中文问题,再解决一小点。

这次碰到的问题是,浏览器把url的get参数值编码为GBK了,而我在tomcat的serve.xml文件中设置的是URIEncoding=“UTF-8”

问题:看这样一个URI

看过一篇文章说,url部分都是用utf8编码的,而后面的参数值——心脏病  的编码非常不确定,跟操作系统环境、浏览器本身、网页编码有关系。而后台get方法拿到的都会是乱码,就算确定知道前台传过来的是GBK编码。

request.setCharacterEncoding()只能解决post方式提交的中文数据, 而get方法好象我如何该都是乱码,后来改了server.xml里的URLEncoding属性后才好

一、加一个过滤器

package asatapp

import javax.servlet.Filter;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.FilterChain;

import java.io.IOException;

import javax.servlet.http.*;

public class EncodingFilter implements Filter {

private String encoding;

public EncodingFilter() {

}

public void init(FilterConfig fconfig) throws ServletException {

encoding = fconfig.getInitParameter("charset ");

}

public void doFilter(ServletRequest req, ServletResponse resp,

FilterChain fchain) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) req;

request.setCharacterEncoding(encoding);

fchain.doFilter(req, resp);

}

public void destroy() {

}

}

WEB.XML中

encoding

asatapp.EncodingFilter

charset

gb2312

encoding

/*

同学做的一个项目中,也是用过滤器解决的。不过他们做的get请求基本都没有中文,不知道是否有效。

二、我在web.xml中配置spring的过滤器了,但是无效

encodingFilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

UTF-8

forceEncoding

true

encodingFilter

/*

三、还是配置tomcat的server.xml文件,有效

URIEncoding="UTF-8"/>

加了URIEncoding="UTF-8"

四、有人提出字符转换函数,自己试了下,无效

publicString toGBK(String str){try{byte bt[] = str.getBytes( "ISO-8859-1 ");

str= newString(bt);

}catch(Exception ex) {

}returnstr;

}

最后、解释

tomcat server.xml中有2个参数是配置编码的,一个是URIEncoding,另一个是useBodyEncodingForURI.

apache tomcat官方网站对这两个参数的解释:

URIEncoding

This specifies the character encoding used to decode the URI bytes, after %xx decoding the URL. If not specified, ISO-8859-1 will be used.

useBodyEncodingForURI

This specifies if the encoding specified in contentType should be used for URI query parameters, instead of using the URIEncoding. This setting is present for compatibility with Tomcat 4.1.x, where the encoding specified in the contentType, or explicitly set using Request.setCharacterEncoding method was also used for the parameters from the URL. The default value is false .

如果http请求中,在contentType中指定了编码方式,那么将采用contentType的编码方式去解码url之后的查询参数,将忽略URIEncoding的配置.

所以在get请求时,如果contentType指定了编码方式,将会带来一定的问题(最大的问题就是,服务器端对查询字符串的编码方式无法统一),最后我决定让 useBodyEncodingForURI 参数保持默认(false):即所有的URL查询字符串的编码采用URIEncoding的参数(UTF-8),服务器端编码保持原来的统一方式.

tomcat java 参数乱码_【java】怎样解决tomcat中get提交中文参数为乱码的问题相关推荐

  1. Java中url传递中文参数取值乱码的解决方法

    Java中url传递中文参数取值乱码的解决方法 参考文章: (1)Java中url传递中文参数取值乱码的解决方法 (2)https://www.cnblogs.com/liwenjuan/p/3211 ...

  2. cocos2dx java 乱码_[cocos2d-x] --- 完美解决中文乱码

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 一 介绍 最近由于各种各样的原因,好长时间没有学习cocos2d-x了.突然有种害怕的感觉,这样下去,以前学的关于cocos2d-x的一点皮毛会彻底忘记的 ...

  3. java url传参中文乱码问题_java中url传中文参数出现乱码

    缘由:java Http请求传输时将url以ISO-8859-1编码,服务器收到字节流后默认会以ISO-8859-1编码来解码成字符流(形成中文乱码).服务器 方法一:编码 咱们须要把request. ...

  4. c# mysql 汉字乱码_在C#和MySQL中存取中文字符时避免乱码的方法

    当用到socket来进行网络程序开发时,大多数情况下会遇到中文字符的发送与接收,这时若对发送的字符串用默认的方式进行处理,则一般会得到一堆乱码. 由于中文字符采用双字节表示,所以对含有中文的字符串的处 ...

  5. 解决python中csv文件中文写入问题

    解决python中csv文件中文写入问题 参考文章: (1)解决python中csv文件中文写入问题 (2)https://www.cnblogs.com/harrymore/p/10063775.h ...

  6. 关于JAVA中URL传递中文参数,取值是乱码的解决办法

    今天遇到一个问题就是在Action当中把一条中文信息绑定在URL的后面,ActionForward到别一个页面时,用reqeust.getParameter取出是出现乱码的问题. 现解决办法如下: 1 ...

  7. java scp 传文件乱码_转-linux 打开移动硬盘中的文本文件显示为乱码

    我最近发现很奇怪的问题,为什么我的Linux 明明可以显示中文,也可以保存中文文本文件,但是打开移动硬盘中保存的文本文件还是乱码.最后搜索了半天才找到了答案. 编码不同, 点击(此处)折叠或打开 vi ...

  8. java web乱码_【SpringBoot WEB 系列】RestTemplate 之中文乱码问题 fix

    [WEB 系列]RestTemplate 之中文乱码问题 fix 在 RestTemplate 基础用法博文中,post json 表单时,会发现存在中文乱码问题,本文主要介绍对应的解决方案 I. 中 ...

  9. Java前后端分离项目生成二维码链接带中文参数遇到的问题及解决办法

    遇到的问题 最近项目做二维码分享链接过程中遇到了个小问题,使用Java后端生成二维码链接时,当拼接的参数中带有中文,使用手机浏览器扫码正常,但是用微信扫码,url中的中文被和谐掉了,导致页面显示有问题 ...

最新文章

  1. 通过正则寻找符合要求的字符串
  2. C++解析-外传篇(1):异常处理深度解析
  3. 算法设计与分析——贪心算法——活动安排问题
  4. java实现字符逆序输出
  5. node08-express
  6. vant-联系人卡片
  7. C#的引用类型有四种类、代表、数组、接口
  8. mysql 游标的简单_mysql 简单游标
  9. 机动车辆保费计算器 1.1新版发布
  10. ELK-elasticsearch-kibana-logstash 报错问题集锦
  11. 人工智能感知技术是机器人应用支撑技术之一
  12. javascript紧接上一张for循环的问题,我自己的理解
  13. ❤️区块链Hyperledger Fabric 老版本 1.1.0 快速部署安装 教程合集❤️
  14. Docker最新教程 (视频地址https://www.bilibili.com/video/BV1og4y1q7M4)
  15. Windows11 0x80190001错误解决
  16. Errors occured, no packages were upgraded. ⇒ ERROR: Failed to install packages to new root.
  17. 微信小程序开发工作流程
  18. 《脑与语言认知 江铭虎》读书总结
  19. 用敏捷思维来指导我们的工作和学习 --专栏《说透敏捷》学习总结
  20. 软件工程基础知识复习宝典

热门文章

  1. 如何成为一个牛逼的程序猿
  2. 广东省污水处理厂数字孪生平台建模_三维可视化平台_吉优赛维数字孪生_三维激光扫描_BIM建模
  3. 使用js转换数据库时间类型
  4. 修改Ubuntu时区
  5. 基于matlab的自动识别谱峰的程序设计,基于MATLAB的自动识别谱峰的程序设计
  6. 排序算法(希尔排序)
  7. linux大作业聊天室报告,Linux聊天室系统期末大作业.docx
  8. Postgres忘记密码如何修改密码
  9. 输入命题p和q的真值,求p、q的合取、析取、异或、蕴含和等值命题的真值
  10. 【鱼眼】M4/3用户对鱼眼镜头的误解(7.5mm的鱼眼镜头的等效焦距是12mm或15mm,但是依然是鱼眼镜头而不是广角镜头)