Rubin's Blog

  • 首页
  • 关于作者
  • 隐私政策
享受恬静与美好~~~
分享生活的点点滴滴~~~
  1. 首页
  2. 问题记录
  3. 正文

问题记录之网页预览Office

2021年 4月 30日 782点热度 0人点赞 0条评论

这是在我的开源项目r_pan新版本开发过程中,遇到的一个问题。特此记录。

问题

问题是这样的,我在自己开发了文件预览后端接口后,就弃用了之前通过Nginx搭建的静态资源转发的解决方案。在测试过程过程中,发现其他的类型文件还好,Office文件的预览总是出问题。

经查找原因,发现我的URL拼接后是这样的:https://view.officeapps.live.com/op/view.aspx?src=https://pan.rubinchu.com/preview?...。这就很奇怪了,因为我明明用encodeURI()函数来转码了,但是显示效果还是上面那样,这样的话预览接口的参数传递就会有问题,而导致你预览失败。

解决方案

产生这个问题的原因还是自己对于js的了解程度不够,以为encodeURI就能解决url参数传递过程中的格式问题。解决方案就是把自己的预览链接使用escape()函数或者encodeURIComponent()函数编码。

经查资料,js对于url的编码和解码有三种处理函数:

  • escape 和 unescape。
  • encodeURI 和 decodeURI。
  • encodeURIComponent 和 decodeURIComponentescape。

escape 和 unescape

eacape函数的主要作用是将给定的字符串转换为Unicode编码值。它会所有的空格符、标点符号、特殊字符等等非ASCII的字符全部转化为%xx格式的字符编码。

escape不编码的字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z。

encodeURI 和 decodeURI

encodeURI函数的主要作用是将URL字符串使用UTF8编码来转换为Unicode编码值。它的常规用法是转换URL中的中文。

encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z。

encodeURIComponent 和 decodeURIComponentescape

encodeURIComponent函数和encodeURI不同的是,它会对URL中的整体使用UTF8编码格式来进行编码。也就是说,在encodeURI中不编码的!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~字符都会被编码转换。

总结

我们在遇到URL传参问题时,首先要考虑使用encodeURIComponent函数进行转码传递。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 问题记录
最后更新:2022年 6月 9日

RubinChu

一个快乐的小逗比~~~

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复
文章目录
  • 问题
  • 解决方案
    • escape 和 unescape
    • encodeURI 和 decodeURI
    • encodeURIComponent 和 decodeURIComponentescape
  • 总结
最新 热点 随机
最新 热点 随机
问题记录之Chrome设置屏蔽Https禁止调用Http行为 问题记录之Mac设置软链接 问题记录之JDK8连接MySQL数据库失败 面试系列之自我介绍 面试总结 算法思维
java并发编程之CompletableFuture Nginx详解 Spring之声明式事务 MHA高可用架构搭建 问题记录之设置普通maven工程的编译级别 MySQL之Sharding-JDBC读写分离

COPYRIGHT © 2021 rubinchu.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

京ICP备19039146号-1