springgateway网关修改响应后,部分中文乱码问题

这篇具有很好参考价值的文章主要介绍了springgateway网关修改响应后,部分中文乱码问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原因

是因为响应体过大,开启了压缩,数据分段进行响应得,导致处理返回体得时候乱码文章来源地址https://www.toymoban.com/news/detail-680117.html

解决方式

@Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        ServerHttpRequest request = exchange.getRequest();
        ServerHttpResponse originalResponse = exchange.getResponse();
        DataBufferFactory bufferFactory = originalResponse.bufferFactory();
        ServerHttpResponseDecorator decoratedResponse = new ServerHttpResponseDecorator(originalResponse) {
            @Override
            public Mono<Void> writeWith(Publisher<? extends DataBuffer> body) {

                if (getStatusCode() != null && getStatusCode().equals(HttpStatus.OK) && body instanceof Flux) {
                    Flux<? extends DataBuffer> fluxBody = Flux.from(body);
                    return super.writeWith(fluxBody.buffer().map(dataBuffers -> {
                        DataBufferFactory dataBufferFactory = new DefaultDataBufferFactory();
                        DataBuffer join = dataBufferFactory.join(dataBuffers);
                        byte[] content = new byte[join.readableByteCount()];
                        join.read(content);
                        DataBufferUtils.release(join);
                        //完整得响应体
                        String responseData = new String(content, StandardCharsets.UTF_8);
                        return bufferFactory.wrap(responseData.getBytes(StandardCharsets.UTF_8));
                    }));
                }
                return super.writeWith(body);
            }
        };
        return chain.filter(exchange.mutate().response(decoratedResponse).build());
    }

到了这里,关于springgateway网关修改响应后,部分中文乱码问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • linux C.UTF-8和en-US.UTF-8语言环境有什么区别?(中文乱码问题)locale命令 centos、ubuntu修改编码集(没搞定!)

    我在ubuntu16.04虚拟机和英伟达盒子ubuntu18.04上分别部署了ngrest服务 用postman请求,ubuntu16.04虚拟机返回的中文是乱码,英伟达盒子ubuntu18.04不是乱码 用vi打开文件,ubuntu16.04虚拟机显示中文不是乱码,英伟达盒子ubuntu18.04是乱码 我用 echo $LANG 命令查看发现(或者直接用 locale 命令

    2024年02月06日
    浏览(50)
  • Unity TextMeshPro解决中文乱码以及修改默认字体

    (自学unity问题产生及解决记录贴) 环境及版本:windows,unity 2021.3.20f1c1 一、创建TextMeshPro输入中文产生乱码 问题:TextMeshPro中文显示乱码 解决方法: 使用系统自带字体 在C:WindowsFonts路径下找一个字体,以微软雅黑为例,复制到unity目录下(unity项目中,在project右键Show in E

    2023年04月12日
    浏览(50)
  • Windows终端中文乱码,查看系统默认编码及修改系统默认编码

    最近 windows 升级之后出现一个问题,终端出现了乱码,导致启动程序启动不起来。 方式一: 在Windows平台下,win+r 打开运行—》输入cmd进入cmd窗口,输入:chcp 可以得到操作系统的代码页信息,你可以从控制面板的语言选项中查看代码页对应的详细的字符集信息。 例如: 方式

    2024年02月12日
    浏览(46)
  • 爬虫—响应页面乱码问题解决方法

    案例:腾牛网图片抓取 源代码如下: 执行之后,报错如下: 解决办法: 方法一,设置解码格式为’GBK’ 运行结果如下: 方法二,自动获取解码格式

    2024年01月21日
    浏览(42)
  • 解决jmeter响应乱码的问题

    方法一:添加后置处理器BeanShell PostProcessor,写入【 prev.setDataEncoding(\\\"utf-8\\\") 】  方法二:修改bin目录下的配置文件jmeter.properties,将配置修改为【 sampleresult.default.encoding=UTF-8 】 在JDBC Connection Configuration的Database URL的配置增加 characterEncoding=utf-8

    2024年01月19日
    浏览(34)
  • SpringBoot中解决响应乱码问题

    第一种: 用响应流的方式 第二种:请求对象内设置媒体类型   req是HttpServletRequest对象  SetMediaType mediaTypeSet = new HashSet();         MediaType mediaType = new MediaType(\\\"application\\\", \\\"json\\\", Charset.forName(\\\"utf-8\\\"));         mediaTypeSet.add(mediaType);         req.setAttribute(HandlerMapping.PRODUCIBLE_MEDIA_TYP

    2024年02月12日
    浏览(38)
  • 串口打印中文乱码及注释乱码问题

    在使用keil5中出现如下问题: 这时候的解决方法是在keil5顶头工具栏上进入:Edit→Configuration,如下然后进行选择GB2312编码方式: 在检查串口波特率等设置双方均一样之后,还是出现中文乱码问题的解决方法如下: 方法一: ​ 在进行上面的操作后,注释处中文乱码问题解决

    2024年02月07日
    浏览(39)
  • Jmeter响应中的乱码问题

    Jmeter在访问接口的时候,响应内容如果有中文可能会显示乱码 响应页面没有做编码处理,JMeter默认按照ISO-8859-1编码格式进行解析 在线程组中添加BeanShell PostProcessor后置处理器

    2024年02月14日
    浏览(40)
  • Ubuntu中文字幕乱码亚洲影视的乱码问题

    Ubuntu看电影总是加载中文字幕的时候出现乱码,后来发现是亚洲影视字符编码的问题,今天休假在家就写了一个小的中文字幕乱码字符转码的程序,目前来说满足我自己的需求了,代码如下: import sys,io if len(sys.argv) != 2: print \\\"Please input file path!\\\" else: f1 = io.open(sys.argv[1], \\\"r\\\", e

    2024年02月11日
    浏览(73)
  • SpringGateway网关(Spring Gateway是Spring自己编写的,也是SpringCloud中的组件)

    目录 SpringGateway网关 奈非框架简介 什么是网关 网关的主要功能有 Spring Gateway简介 网关路由配置 动态路由 早期(2020年前)奈非提供的微服务组件和框架受到了很多开发者的欢迎 这些框架和SpringCloud Alibaba的对应关系我们要了解 现在还有很多旧项目维护是使用奈非框架完成的微

    2024年02月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包