栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java.time.format.DateTimeParseException: Text ‘xxxx-xx-xx xx:xx:xx‘ could not be parsed at index 10

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java.time.format.DateTimeParseException: Text ‘xxxx-xx-xx xx:xx:xx‘ could not be parsed at index 10

目录

场景描述&排查

原因

处理


场景描述&排查

在前后端分离的交互当中,对一个JSON转换成object对象时出现了这样的问题

异常的字符索引为10,也就是说那个空格有问题。

把异常的日期字符串抓出来对比了一下

 奇怪。两个空格明明长得是一模一样的,为什么会报错呢?

两个运行试一试。

 

 戏剧性的问题出现了。两个一模一样的日期字符串,一个能正常运行,另一个不能。异常依旧说明那个不能正确运行的日期字符串中的空格有问题。但是根据上面的排查已经确定了那个空格并非全角空格,全角空格会比半角空格“胖”一点很容易用肉眼看出来区别。

排查到这里仿佛陷入了尴尬的境地,直到我想起了字符的ASCII码...毕竟肉眼可见的问题已经排查完了,现在就剩下肉眼不可见的东西还没排查了。

在java中,想要拿到某个字符的ASCII码需通过int类型来接收。当然想要从字符串里面拿到某个字符的ASCII码还得这么写:

接下来是获得两个空格的编码。

 运行

 可以看到那个正常的空格是32,对应ASCII码表是正确的。但是这个160的空格是怎么弄出来的呢?

毕竟这个有问题的日期字符串是前端传递过来的,也就是说前端在拼接日期字符串的时候使用了不合适的空格。

最后询问了一下前端发现前端使用的是 'xa0' 作为空格的拼接符...

原因

前端使用了一个不合适的空格替换符 'xa0'。导致后端日期格式转换器无法识别这样的空格出现异常。

处理

前端将 'xa0' 换成32码点的空格(手打的空格)解决问题;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1006373.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号