4
回答
Netty4 http服务器接收信息时,获得的uri中有中文乱码
华为云4核8G,高性能云服务器,免费试用   
因为信息由delphi做的软件上传的以GBK编码的,在netty接收到请求后,发现uri中的中文乱码,如何解决,求大神指导
举报
黑白羽
发帖于2年前 4回/772阅

以下是问题补充:

共有4个答案 最后回答: 2年前
这种问题一般是服务端和客户端两边的编码格式不统一造成的,可以分析一下两边的编码格式,统一一下两边格式应该就行了
你的HttpFileServerHandler中

QueryStringDecoder decoderQuery = new QueryStringDecoder(request.uri(), Charset.utf8);

你把这个里面的utf8跟客户端那边统一一下就行了

--- 共有 7 条评论 ---
黑白羽回复 @BoXuan : 我去试下 2年前 回复
节节草回复 @BoXuan : 客户端是用get?post方式: HttpPostRequestDecoder decoder = new HttpPostRequestDecoder(new DefaultHttpDataFactory(DefaultHttpDataFactory.MINSIZE, Charset.utf8), request, Charset.utf8); 2年前 回复
节节草回复 @黑白羽 : 我这边测试是没问题的 2年前 回复
节节草回复 @黑白羽 : 嗯,我测试一下再答复你 2年前 回复
黑白羽回复 @BoXuan : 编码都试了 gbk,gb2312,utf8,就怕编码没统一 2年前 回复
HttpMethod httpMethod = request.method();
if (httpMethod == HttpMethod.GET) {
    QueryStringDecoder decoderQuery = new QueryStringDecoder(request.uri(), Charset.utf8);
Map<String, List<String>> uriAttributes = decoderQuery.parameters();
} else if (httpMethod == HttpMethod.POST) {
    HttpPostRequestDecoder decoder = new HttpPostRequestDecoder(new DefaultHttpDataFactory(DefaultHttpDataFactory.MINSIZE, Charset.utf8), request, Charset.utf8);
List<InterfaceHttpData> list = decoder.getBodyHttpDatas();
}
--- 共有 8 条评论 ---
节节草回复 @黑白羽 : 我这边用着好好的,不管是get还是post,能提交参数和文件,还能直接提交纯字节数据,编码都没问题。我建议你在服务器这边处理request请求这里断点调试一下。 2年前 回复
黑白羽回复 @BoXuan : 由别人开发的一个软件提交的,没法改了。。。 2年前 回复
节节草回复 @黑白羽 : 完全可以一次性用post提交的,post提交表单时是可以提交参数和文件的。 2年前 回复
节节草回复 @黑白羽 : 这个异常应该是你那边少写了个handler,导致无法处理数据 2年前 回复
黑白羽回复 @BoXuan : 先get提交,进行一次操作。然后再进行post提交,提交所带的图片文件 2年前 回复
顶部