当前位置:网站首页>附加:【URLEncoder.encode(待编码字符串, “编码方式“);】(是什么?;我们向cookie中设置值的时候,为什么要使用这个去编码?)(待完善……)
附加:【URLEncoder.encode(待编码字符串, “编码方式“);】(是什么?;我们向cookie中设置值的时候,为什么要使用这个去编码?)(待完善……)
2022-07-27 12:48:00 【小枯林】
说明:
(1)为什么写了本篇博客?:在【51:第五章:开发admin管理服务:4:开发【新增admin账号,接口】;】时,发现:
● 在管理员登录的时候,我们把管理员的atoken、aid、aname设置进cookie;然后,在设置进cookie的时候,会对其使用【URLEncoder.encode(待编码字符串, "编码方式");】进行转码;
● 但是,我们在设置aname的时候,如果aname中有中文的话,其会把中文转成"乱码"(PS:其实这儿说是乱码,不太合适);
● 然后,面对上面的情形,自己首先想到的就是:我们向cookie中设置值的时候,如果遇到"包含中文的字符串",我们就不使用【URLEncoder.encode(待编码字符串, "编码方式");】去设置编码方式;;;但是,又担心这样做的话,可能会导致其他无法预料的后果;
(2)所以,本篇博客主要解决以下几个问题:
● 问题1:【URLEncoder.encode(待编码字符串, "编码方式");】是啥,其有什么作用;
● 问题2:好好的,我们设置cookie的时候,为什么非得要使用【URLEncoder.encode(待编码字符串, "编码方式");】设置编码方式呐?
(3)本篇博客参考的文章有:
●【为什么要 urlencode()】,该文的作者是【yanlei】;
●【你真的了解URLEncode吗?】,该文的作者是【xiaxveliang】;
目录
一:问题1:【URLEncoder.encode(待编码字符串, "编码方式");】是啥,其有什么作用;
(1)以前遇到过很多需要设置编码方式的地方:比如请求中的乱码,响应中的乱码,HTML等前端静态文件中的乱码,前后端交互时JSON的乱码,Tomcat的乱码,编译器的编码方式等等;这些问题,想要解决,都有很明确的解决策略,没什么好重复啰嗦的;
(2)然后,这儿遇到的是URLEncoder.encode();
一:问题1:【URLEncoder.encode(待编码字符串, "编码方式");】是啥,其有什么作用;
1.参考文章1:为什么需要URLEncoder?
参考自【为什么要 urlencode()】,该文的作者是【yanlei】;
……………………………………………………
经过实测,【URLEncoder.encode(待编码字符串, "编码方式");】是有这个效果的;
……………………………………………………
即,通过这儿的描述,似乎有这么一个感觉:
● 有的时候,我们会希望通过url,来传递一些数据;
● 而,url对其中的数据格式是有限制的,比如不能有空格、不能共有@字符,不能有中文等字符;
● 所以,【如果我们有些字符,希望附加到url中,来传递】+【这些字符中,有空格、@ 字符、或中文】的时候,就需要先对这个字符,利用【URLEncoder.encode(待编码字符串, "编码方式");】去编码,以符合url的格式要求;
● 然后,其编码的时候,到底采用什么编码方式不重要;只要双方约定好就行;
2.参考文章2:你真的了解URLEncode吗?
参考自【你真的了解URLEncode吗?】,该文的作者是【xiaxveliang】;
……………………………………………………
● 上面的举的案例,很容易理解;
● 有关Content-Type的内容,可以参考【Servlet与JSP进阶三:响应头中的Content-Type】、【Content-Type 详解】等博客;
至此,感觉上面对于【URLEncoder.encode(待编码字符串, "编码方式");】的介绍,目前来说,就"够用"了;暂时,没必要过分深究;
二:问题2:好好的,我们设置cookie的时候,为什么非得要使用【URLEncoder.encode(待编码字符串, "编码方式");】设置编码方式呐?
1.问题;
正如在【51:第五章:开发admin管理服务:4:开发【新增admin账号,接口】;】中,提到的那样;好好的,我们设置cookie的时候,为什么非得要使用【URLEncoder.encode(待编码字符串, "编码方式");】设置编码方式呐?
2.分析;
(1)一开始,我们设置进cookie的是uid和utoken;可以参考【27:第三章:开发通行证服务:10:【注册/登录】接口:注册/登录OK后,把用户会话信息(uid,utoken)保存到redis和cookie中;(一个主要的点:设置cookie)】;
(2)当时,uid(利用雪花算法生成的)和utoken(利用UUID生成的)是没有特殊字符、空格、@ 、中文等;所以,其经过【URLEncoder.encode(待编码字符串, "编码方式");】转码之后,其是不变的;
(3)然后,我们把uid和utoken设置到cookie中后,后面在判断用户是否登录、发表||删除文章、查询文章列表等接口时候,前端会从cookie中获取uid和utoken,把其设置进header请求头中;同时,也看到了吧uid设置进url中;
(4)所以,盲猜这儿是这样考虑的:既然设置进cookie的值,前端有可能拿过来放到url中;那么,我们向cookie中设置值的时,干脆一律使用【URLEncoder.encode(待编码字符串, "编码方式");】去编码吧;
(5)但是,上面的一刀切的方式,就产生了【51:第五章:开发admin管理服务:4:开发【新增admin账号,接口】;】中遇到的,问题;
3.解决策略;
心里面已经有一个解决策略了;但是,因为暂时不确定哪种解决测试更合适,哪种解决方式在实际开发中更多地被大家采纳;所以,这儿暂时搁置一下……
目前来说,先保持现状吧。
边栏推荐
猜你喜欢

52:第五章:开发admin管理服务:5:开发【分页查询admin账号列表,接口】;(Swagger的@ApiParam(),对方法参数进行注释;PageHelper分页插件;拦截器拦截检查登录状态)

51:第五章:开发admin管理服务:4:开发【新增admin账号,接口】;(只开发了【用户名+密码的,方式】;【@T…】注解控制事务;设置cookie时,是否需要使用URLEncoder去编码;)

Background and framework introduction and basic environment preparation of hucang integrated e-commerce project

Musk was exposed to be the founder of Google: he broke up his best friend's second marriage and knelt down to beg for forgiveness

面试考点:三种图的问题

Aike AI frontier promotion (7.27)

力扣 1480. 一维数组的动态和 383. 赎金信412. Fizz Buzz

Optimization Practice of Flink OLAP job scheduling and query execution based on ByteDance

"Game engine light in light out" 4.1 unity shader and OpenGL shader

@Simple use of conditional
随机推荐
正向预查和反向预查
Detail the execution process of JDBC query method
Reptile
POJ2446 Chessboard【二分图最大匹配】
力扣 1480. 一维数组的动态和 383. 赎金信412. Fizz Buzz
A survey of video game addictive behavior research
Connotative quotations
Poj2446 chessboard [maximum matching of bipartite graph]
开源项目丨Taier1.2版本发布,新增工作流、租户绑定简化等多项功能
粘制定位
湖仓一体电商项目背景与架构介绍及基础环境准备
绝对定位
Do you really understand CMS garbage collector?
AMD Adrenalin 22.7.1 驱动更新:OpenGL 性能翻倍,支持微软 Win11 22H2 系统
Can you tell me the difference between lateinit and lazy in kotlin?
SQL GROUP BY语句
xshell7可以登录mysql虚拟机不能登陆mysql
Application for the latest version of Pan domain name certificate
银行案例|Zabbix跨版本升级指南,4.2-6.0不香吗?
Detail the construction methods, attributes and common methods in reflection




















