java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1 异常解决
·
目录
现象
和前端联调时,发现前端传输的生僻字参数时会使服务端报错(非生僻字正常):java.lang.IllegalStateException: java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1。异常栈最先抛出的是 MalformedInputException,这个类的包名关键字是 charset,感觉像是编码问题导致的。本地跑测试用例未复现。
使用Wireshark抓包
本地使用Wireshark抓包的时候,但是报文中中文显示为点符号。如下图所示

中文显示问题
这是Wireshark的默认显示问题,不是抓包错误。Wireshark默认将非ASCII字符显示为点(.),需要配置才能正确显示中文。
Wireshark默认配置
-
ASCII-only显示:默认只显示ASCII字符(0x00-0x7F)
-
非ASCII转为点号:中文、日文、韩文等都显示为点符号
解决方案
查看包的字节流,具体操作如下图所示

然后显示为选择为urf-8即可显示出中文。本地测试生僻字显示正常无问题

问题原因
前端同学按照同样的方式抓包操作,发现传输的时候生僻字即便选择urf-8也不能显示正确如下图所示。前端反馈调用了浏览器的一些接口,处理特殊字符的编码存在问题。

======================
喜欢求个关注,回归持续更新
======================
更多推荐

所有评论(0)