JavaWeb解决url中中文参数乱码以及cookie中中文乱码问题

        今天来专门写一篇博文记录JavaSE中的URLEncoder类,因为已经两次用这个类解决了自己遇到的棘手问题。第一次是之前做视频网站的搜索功能的时候,第二次是今天在做登录功能登录后录入中文cookie时出现java.lang.IllegalArgumentException: Control character in cookie value的异常问题,通过该类完美解决了。

        URLEncoder类是JavaSE中java.net包下定义的一个类,我们都知道,JavaSE是Java的基础,所以学习JavaWeb虽然主要用的是JavaEE,但对JavaSE的知识也要牢牢地掌握好。在JavaSE中,与URLEncoder共存的类还有URLDecoder类,前者是编码类,后者是解码类。当遇到中文的时候,使用URLEncoder.encode("","utf-8");方法将url或者cookie中文编码为utf-8,在取出的时候使用URLDecoder.decoder("","utf-8");方法将中文解码取出。

        说了这么多,感觉还是放到实际应用中更有说服力。接下来我把文首提到的两个问题罗列出并叙述是如何通过URLEncoder类解决的。

1.在做视频网站搜索功能的时候,关于搜索关键词的问题苦恼了我半天,当在爬虫程序中定义中文搜索的时候总是出问题,后来看了爬取的网站,才发现,当你输入中文搜索的时候,浏览器会自动将搜索url中的中文转化为十六进制数据,比如

,而通过爬虫程序是不会自动转化的,那么也不会搜索到相应结果。这个时候只有用URLEncoder类才能将中文转为需要的内容。

2.今天在做登录功能登录后录入中文cookie出现java.lang.IllegalArgumentException: Control character in cookie value的异常问题,后来在网上搜了下,知道了cookie中不能直接存储中文,必须在设置cookie的时候使用URLEncoder.encode("","utf-8");方法将中文编码

 。再在需要取出cookie的时候将cookie中编码后的内容解码为原本的中文。

接下来,一切恢复平静,cookie中的登录名也正常显示了!

说到底,还是中文编码的问题,一不留神,就因为编码问题抛出异常或者显示奇奇怪怪的字符,以后还是要小心为妙。

猜你喜欢

转载自blog.csdn.net/qq_35750547/article/details/83277983