来吐槽一个问题,get方法 getPara 会中文乱码,只能手动处理吗?

来吐槽一个问题,get方法 getPara 会中文乱码,只能手动处理吗? post方法是OK的,但是就想用get呢? 不是一般都有乱码过滤器的吗?

试了一下,获取到的是iso-8859-1,说明并没有经过乱码过滤器处理。

  String kw = inv.getController().getPara("kw");
  System.out.println(new String(kw.getBytes("iso-8859-1"), "utf-8"));

貌似也是没办法的,因为get方法的话,尽管可以有个过滤器处理掉get,但是怎么样把处理后的结果扔回request?

不过貌似作为框架的话,应该是有办法的吧?

评论区

Dreamlu

2017-01-05 10:46

你百度下,tomcat中文字符集设置

sruz

2017-01-05 11:08

sruz

2017-01-05 11:19

@Dreamlu 而且那不是一个比较好的解决方案,每次换地方部署,还有专门的去修改tomcat配置,,

JFinal

2017-01-05 14:19

tomcat 的 server.xml 配置文件中,找到你项目正用的 connector 配置,在里面添加: URIEncoding="UTF-8" 即可

特别注意:此问题与 jfinal 毫无关系,用任何框架都会有这个问题

sruz

2017-01-05 15:10

@JFinal 可是,每次部署都得改tomcat配置文件不是很麻烦吗? 而且貌似也没有效果,,,,,,,,,,,,

JFinal

2017-01-05 15:17

@xRhbN http 协议对于 url 的设计就是这么做的,url 中不支持使用中文,传递中文都是通过 post 请求,这个 jfinal 也没法去改变

JFinal

2017-01-05 15:18

@xRhbN jfinal 在服务端并不知道 GET 请求的 encoding 是什么,也不方便去干预这件事

sruz

2017-01-05 15:27

@JFinal 有没有可能,搞一个设置,可以设置get的编码的,而处理的话,可以在getPara 方法中处理,额,其实貌似直接切面把这个方法改造一下就行了,刚刚居然没想到

JFinal

2017-01-05 15:37

@xRhbN 弄个 BaseController, 覆盖掉父类的 getPara 方法,添加自己需要的个性化功能

qgzsyf

2018-02-22 16:39

最近开发中碰到一个奇怪的问题,当我前端用get方式提交数据时不会出现中文乱码,用post提交的时候反而会,不知道是何原因

热门反馈

扫码入社