神奇的The valid characters are defined in RFC 7230 and RFC 3986

问题如下(图片盗的,懒得自己截图):

我给这鬼东西烦了一天!

之前学校要求我们做一个简单的数据库增删查改的小网页,我写完代码之后啥问题都没有,包括删除其名字(主键)是中文的数据。

这几天老师要求我们把那个网页改成DAO模式(之前是全jsp页面),我就开始改,写到最后发现删除其名字(主键)为中文的数据删除不了,会报出如上图的错误。找了半天都不知道啥问题,于是我就运行回之前那份代码(全jsp那份),也不行了!!之前都是可以的。百度说什么tomcat版本问题啊之类的,可是我tomcat的版本一直都是9.0啊!为毛之前行如今不行。于是我就觉得是js问题,可是js也没改过啊!

最终我放弃了寻找问题!

而是参考https://blog.csdn.net/yhq1913/article/details/53406275

解决如下:

不符合的符号都先在客户端进行URLEncode编码,再将URL拼接成一个整体后再发送出去。最后服务端在进行解码。

只不过我页面本来的编码就是utf-8

按照上图的代码写依然是会乱码(但是能传送过去了)

其实我也不太懂原理

所以我的代码是


out.print("<form action=\"../servlet/servlet?method=delete&name="+java.net.URLEncoder.encode(user.getUsername(),"utf-8")+"\" method=\"post\">");
out.print("<input type=\"submit\" value=\"删除\">");
String username = new String(request.getParameter("name").getByte("utf-8"),"utf-8");       
 username = java.net.URLDecoder.decode(username,"utf-8");

反正很神奇


啊 今天在书本发现了这东西原来叫做 使用String类的构造方法对字符串进行重构

但我还是不懂为啥要将utf-8重构成utf-8

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值