【exception】Could not read document Invalid UTF-8 middle byte 0x3f

Unicode特殊字符处理:编码原理与编程实践指南 Unicode字符集是现代软件开发中处理多语言文本的基础标准,它通过统一的编码方案支持全球各种文字符号。其核心原理是为每个字符分配唯一的码点,实现跨平台、跨语言的字符一致性表示。在编程实践中,正确处理Unicode字符能够避免乱码问题,提升应用的国际化能力。特别是在处理用户输入、文本解析、数据库存储等场景时,需要考虑字符编码兼容性。以特殊符号组合"(˶> ᎑ <˶)"为例,其中包含修饰符字母和格鲁吉亚扩展字符,这类混合字符集在字符串处理、正则表达式匹配、网络传输等环节都可能引发技术挑战。通过合理的编码转换、 阅读详情

今天开发完功能后打包部署到服务器后页面操作出现这个问题,花了点时间分析解决了,记录一下

问题描述

  • 在本地开发测试的时候没有问题,但是打成jar包放到windows server运行后,在页面点击,调用接口抛出了这个异常。一开始以为是数据库中出现了特殊字符,用本地连接测试数据库发现没有问题,所以不是数据库的问题。所以分析是前后端编码和解码的问题。

  • F12检查发现前端发送的是UTF-8的数据,后端也是按照UTF-8解析的,似乎没有问题。但是想到自己刚放上去一个日志记录相关的过滤器和拦截器,大致定位是在这个位置的问题。

  • 过滤器中有一个操作是从POST请求的流中获取到请求json,然后设置一个新的流返回,这样后面的controller才能获取到RequestBody。所以基本定位就是在重新设置流的时候没有指定字符集,导致这里的流在springmvc解析参数的时候抛出了这个异常。

解决

原来这个代码是在网上找的,目的是为了获取POST中的参数:

@Override
    public ServletInputStream getInputStream() throws IOException {
        final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(body.getBytes());
        ServletInputStream servletInputStream = new ServletInputStream() {
            @Override
            public boolean isFinished() {
                return true;
            }

            @Override
            public boolean isReady() {
                return true;
            }

            @Override
            public void setReadListener(ReadListener readListener) {

            }

            public int read() throws IOException {
                return byteArrayInputStream.read();
            }
        };
        return servletInputStream;
    }

上面的部分中,body是之前解析出来的json字符串,这里body.getBytes()是重新获取这个json的字节数组设置输入流。因为这里没有指定字符集,导致了以上的问题。
修改后:

@Override
    public ServletInputStream getInputStream() throws IOException {
        // 这里指定字符集,问题解决
        final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(body.getBytes("UTF-8"));
        ServletInputStream servletInputStream = new ServletInputStream() {
            @Override
            public boolean isFinished() {
                return true;
            }

            @Override
            public boolean isReady() {
                return true;
            }

            @Override
            public void setReadListener(ReadListener readListener) {

            }

            public int read() throws IOException {
                return byteArrayInputStream.read();
            }
        };
        return servletInputStream;
    }
【异常】IDEA启动微服务工程后提示报错:Invalid UTF-8 middle byte 微服务启动后报错:Invalid UTF-8 middle byte。 阅读详情

相关推荐

【kafka】kafka windows Invalid UTF-8 middle byte 0xfe

1.背景 在windows下安装的kafka,然后从网页上拷贝了一条数据,然后直接放到黑窗口控制台中,发送数据,然后在代码中调试,接收数据中文乱码,主要报错是 windows Invalid UTF-8 middle byte 0xfe 2.0xfe是什么意思 0x表示16进制zd,16进制数有1、2、3、4、5、6、7、8、9、A(十进制回10)、B(十进制11)、C(十进制12)、D(十进制13)、E(十进制14)、F(十进制15) 四位二进制数表示一个16进制数 0xfe=>f是答十进制1.

九师兄 1587

编码格式问题 错误:JSON parse error: Invalid UTF-8 middle byte 0x3f

接口因为编码不一致导致出错: org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Invalid UTF-8 middle byte 0x3f; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Invalid UTF-8 middle byte 0x3f at [Source: (Pus

风明水漾的博客 2万+

php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法

错误提示Invalid byte 1 of 1-byte UTF-8 sequence原因分析在中文版的window下java的默认的编码为GBK,也就是所虽然我们标识了要将xml保存为utf-8格式但实际上文件是以GBK格式来保存的,所以这也就是为什么能够我们使用GBK、GB2312编码来生成xml文件能正确的被解析,而以UTF-8格式生成的文件不能被xml解析器所解析的原因。 把xml的encoding属性值UTF-8改为UTF8org.xml.sax.SAXParseException: Content is not allowed in trailing section把先要解析和字符

JSON parse error: Invalid UTF-8 解决办法系列

今天将旧工作空间的项目拷贝至新工作空间目录提示如下错误信息: Request","exception":"org.springframework.http.converter.HttpMessageNotReadableException","message":"JSON parse error: Invalid UTF-8 middle byte 0x3f 造成上述错误的原因:jvm参数未配置编码格式和eclipse 工作空间未指定编码格式。 解决办法:指定jvm 编码格式 打开Windows

zhouzhiwengang的专栏 1万+

STM32F429+LAN8720实战:5分钟搞定LWIP裸机网络通讯(附完整代码)

本文详细介绍了如何在STM32F429微控制器上,结合LAN8720 PHY芯片,在裸机环境下快速部署和配置LWIP协议栈以实现网络通讯。内容涵盖硬件RMII接口连接、STM32CubeMX关键配置、代码移植与定制,以及常见问题排查方法,帮助工程师在资源受限的嵌入式系统中高效实现稳定的以太网功能。

2y3u4i5o6p的博客 961

CocosCreator3.8.2实战:5分钟搞定多分辨率适配与横竖屏自动翻转(附完整Demo)

本文针对CocosCreator3.8.2开发者,提供了一套5分钟快速集成、开箱即用的多分辨率屏幕适配与横竖屏自动翻转解决方案。通过封装好的ScreenAdapter组件,开发者无需处理复杂计算,即可实现等比缩放或拉伸全屏两种主流适配模式,并自动响应设备旋转,有效解决移动端UI在不同屏幕比例和方向下的显示问题。文末附完整Demo。

z4a5b6的博客 721

JSON parse e rror: Invalid UTF-8 middle byte 0x3f;

线上tomcat部署的项目,运行过程中,某一个表修改数据一直报错,在本地没事!查看控制台日志报错如下 org.springframework.http.converter.HttpMessageNotReadableException: JSON parse e rror: Invalid UTF-8 middle byte 0x3f; nested exception is com.fasterxml.jackson. databind.JsonMappingException: Invalid UT

qq_38965140的博客 3728

手把手教你用ZLMediaKit搭建WebRTC直播:本地推流与播放实战

本文详细介绍了如何使用ZLMediaKit搭建WebRTC直播系统,涵盖从环境准备、编译部署、SSL证书配置到本地推流与播放的完整实战流程。通过一步步的指导,帮助开发者快速掌握基于ZLMediaKit的WebRTC推拉流技术,构建低延迟的实时音视频应用。

weixin_28842367的博客 347

JSON parse error: Invalid UTF-8 middle byte 0x3f

JSON parse error: Invalid UTF-8 middle byte 0x3f

weixin_38670912的博客 3409

算法 A 求稳健平均值和稳健标准差

文章目录算法原理代码 算法原理 算法 A 来自 GB/T 6379.5。应用此算法计算得到数据平均值和标准差的稳健值。稳健性是估计算法的特点,而不是其产生的估计值的特点,因此严格来说,称由此算法计算的平均值和标准差是稳健的是不确切的。然而,为避免使用繁琐的术语,“稳健均值”和“稳健标准差”应理解为利用稳健算法计算的总体均值和总体标准差的均值估计。 设数据为 xi,i∈(1,2,⋯ ,n)x_i, i\in(1,2,\cdots,n)xi​,i∈(1,2,⋯,n),记稳健平均值为 x∗,s∗x^*, s^*x

zhuo木鸟的博客 9253

如何读懂CiteSpace图谱?科研小白必看的节点颜色/年轮/聚类解读手册

本文详细解析CiteSpace图谱的核心视觉元素,包括节点颜色、年轮和聚类标识,帮助科研人员准确解读数据分析结果。通过生物医学案例展示如何从图谱中识别关键文献和研究趋势,提供五步系统解读法和常见错误规避策略,助力科研小白快速掌握文献计量分析技巧。

weixin_29179311的博客 313

解决编码格式问题 JSON parse error: Invalid UTF-8 middle byte 0x3f;

解决编码格式问题 JSON parse error: Invalid UTF-8 middle byte 0x3f; 我看了注册表的格式不对 直接在注册表里面找到Tomcat Java编码option值添加 -Dfile.encoding=UTF-8解决问题。按着百度上面改了Tomact的编码 程序也添加了。PostMapping 添加了格式也不行。

姜泽禄的博客 2485

多目标优化权衡分析:从 Pareto 前沿到 3 种量化指标(相关系数/膝点/理想点)

本文深入探讨多目标优化中的权衡分析,介绍从Pareto前沿到三种量化指标(相关系数、膝点、理想点)的实用方法。通过Python代码示例和对比分析,帮助读者在工程设计、投资组合等场景中有效评估目标间的Trade-off关系,实现科学决策。

weixin_29032337的博客 391

Tomcat JsonParseException: Invalid UTF-8 middle byte 0x3f at

解决:进入Tomcat /Bin 文件中 编辑catalina.bat 文件。增加 一行:set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8

xcshaui的博客 1万+

实战经验:Sensor Bringup中那些坑我都帮你踩过了(避坑指南)

本文是一份详尽的Sensor Bringup实战避坑指南,总结了从I2C通信、MCLK时钟、电源管理到图像异常等关键环节的常见问题与排查方法。文章提供了系统化的调试工作流,强调先硬件后软件的排查原则,旨在帮助硬件工程师快速定位并解决Sensor启动过程中的难题,提升开发效率。

weixin_29212429的博客 574

【毕设保姆级指南】基于YOLOv8的DAGM 2007工业缺陷检测系统从搭建到落地

本教程基于YOLOv8算法实现DAGM 2007工业缺陷检测系统,包含数据处理、模型训练和可视化界面开发全流程。首先对DAGM数据集进行格式转换和划分,然后通过YOLOv8训练工业缺陷检测模型,最终构建PyQt5交互界面实现缺陷可视化检测。该系统可用于智能制造中的产品质量控制,帮助快速定位工业产品缺陷,提升检测效率和准确性,为工业质检提供高效解决方案。

LXY_LOVE36的博客 182

vscode springboot Invalid UTF-8 middle byte 0x3f

JSON parse error: Invalid UTF-8 middle byte 0x3f; nested exception is com.fasterxml.jackson.core.JsonParseException: Invalid UTF-8 middle byte 0x3f at [Source: (PushbackInputStream); line: 1, column: 130] 博主以前用的是eclipse,最近用vscode编辑java,但是发现,eclipse上没有出现.

weixin_40918145的博客 1785

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

idea java 相同代码,本地报错Invalid UTF-8 middle byte 0x3f,其他人都正常

Invalid UTF-8 middle byte 0x3f自己项目的解决办法 自己项目的解决办法 File->setting->file encodings Help->edit Custom VM Options -Dfile.encoding=UTF-8:设置系统文件编码格式为utf-8

weixin_43617546的博客 4660

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

JSON parse error: Invalid UTF-8 middle byte 0xc5;

这个错误消息表明,在解析 JSON 数据时遇到了非法的 UTF-8 中间字节(0xc5)。这通常是由于原始 JSON 数据中包含了非法的 Unicode 字符造成的。 UTF-8是一种编码方式,所有的字符都可以用一串0,1来表示,但是对于不同的字符用的0,1的长度可能不同,这就是为什么我们会有“中间字节”这个说法。但0xc5这个字节却不是合法的UTF-8中间字节,所以会抛出错误。 解决方案包括: ...

weixin_35756892的博客 3457

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

JSON parse error: Invalid UTF-8 middle byte 0x3f post请求json 前端传值乱码

JSON parse error: Invalid UTF-8 middle byte 0x3f post请求json 前端传值乱码

m0_63252157的博客 3851

Caused by:com.fasterxml.jackson.core.JsonParseException:Invalid UTF-8 middle byte 0x3f

最近跟前端进行接口联调,前端调用post请求时出现以下问题 经排查是编码的问题,本地IDEA启动不会出现此问题,用命令行启动就有。 解决: java -Dfile.encoding=utf-8 -jar xxxx.jar 这样就没问题了

fenfenguai的专栏 2924

Loadrunner-转码-JSON parse error: Invalid UTF-8 middle错误

问题:直接发送带有参数“浙江”的请求,返回请求提示错误; 详细问题:回放时涉及到一个请求,该请求使用的是web_custom_request()函数,请求参数中带有 “comCodeName”请求参数,该参数为省份信息。而录制时填入的数据为“浙江”,被LR转换后变成了“娴欐睙”。直接回放时没有问题。但是当我进行了参数化后,既参数化的内容为“浙江”,提示“JSON parse error: Invalid UTF-8 middle byte 0xe3……”,如下图所示,大概是跟UTF-8编码格式有关

red_cabbage的博客 4929

ES elasticsearch 异常报错:Invalid UTF-8 middle byte

ES elasticsearch 异常报错:Invalid UTF-8 middle byte 报错 Invalid UTF-8 middle byte 0x74\n at [Source: org.elasticsearch.transport.netty4.ByteBufStreamInput@714a2900; line: 1, column: 4] { "error": { "roo...

前端看世界 8363

使用Kettle抽取数据时,出现中文乱码问题解决方案

使用Kettle在不同的数据库抽取数据时,有时会出现中文乱码问题:其解决方案如下: 1.查看数据库的字符集是否是UTF-8(最常用的字符集) 2.如果数据库设置正确仍然存在中文乱码,则可能是因为有的客户端数据库默认的编码集不是UTF-8,我们只需要在输出时对输出的数据库进行编码配置。我的数据库是MySql,下面是解决图示: a.我的转换图 b.打开表输出——>数据库连接后的“编辑”—...

weixin_30449453的博客 1029
上一篇: 【深入理解Java虚拟机】学习小结
下一篇: 【Java】springboot中URL带有斜杠的转义字符百分之2F导致的400错误
ColdFireMan
博客等级 码龄10年 27粉丝 112原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值