作者:赵成龙 发布时间:2018-10-20 10:53:34 所属类别:IT技术 浏览量:602
今天来专门写一篇博文记录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中的登录名也正常显示了!
说到底,还是中文编码的问题,一不留神,就因为编码问题抛出异常或者显示奇奇怪怪的字符,以后还是要小心为妙。
本文出自LongBro博客,如需转载请注明出处。
本文链接:http://www.longqcloud.cn/blogs/56.html
上一篇:关于HTML中select标记的一些知识
下一篇:评论功能小表情的实现
改版。
2018-05-20 13:50:57
心情有点糟糕
2018-05-20 14:58:52
怎么回事?为啥第二条评论两个ip?
2018-05-20 17:28:31