Jfinal编写接口编码问题

这边用Jfinal写了一部分接口。但是由于客户端的原因,分为两个编码

一个是只能接受gb2312的,另一个是要接收utf8的

我用me.setEncoding("utf-8");  me.setEncoding("gb2312");设置了两个,但是我后来发现有一个设备接受到的成为乱码了。但是在测试软件却是正常的。

我想问下这个分编码响应应该怎么做?


评论区

JFinal

2018-12-24 10:42

jfinal 接收请求设置 encoding 是在 JFinalFilter.java 之中,可以通过继承这个类做个自己的类来取代 JFinalFilter.java

然后在使用的时候,使用自己的这个 MyJFinalFilter 即可

在 MyJFinalFilter 中通过不同的 url 设置不同的 encoding 就可以了

阳光男孩_木木

2018-12-24 11:05

@JFinal 接受请求没有问题,目前的问题在于响应。也就是客户端接收,一个要接收utf8一个要接收gb2312.

JFinal

2018-12-24 11:15

@阳光男孩_木木 响应的 encoding 就取决于你的数据本身是什么编码的,输出无非是通过 response.getWriter() 或者 response.getOutputStream() 拿到 Writer 与 OutputStream 这两个对象,然后往这两个对象里头扔数据

扔的数据是什么 encoding 全由你决定

JFinal

2018-12-24 12:21

@阳光男孩_木木 一个要接收utf8一个要接收gb2312, 这个你就得判断客户端是哪个,识别出客户端是哪个,再选择 encoding 动作即可

阳光男孩_木木

2018-12-24 12:42

@JFinal 好的,谢谢!已经改为了response来响应参数了。

阳光男孩_木木

2018-12-24 12:43

@JFinal 嗯呐,我开始以为是jfinal可以通过me设置,然后我只管调用不同的命名,已经改为原生httpservlet响应方式

JFinal

2018-12-24 14:06

@阳光男孩_木木 如果是在 controller 中通过 response.getOutputStream()/getWriter() 直接响应数据,注意最后要添加一句:
renderNull();

防止 jfinal 帮你默认调用一个 render

阳光男孩_木木

2019-01-31 17:15

@JFinal 好的,谢谢

热门反馈

扫码入社