[Java教程]encodeURI 和encodeURIComponent

0 2015-12-03 19:00:31

转自zccst的又一次掉进encodeURIComponent的坑里了

问题:

ajax.get ( url+'?k1'=v1+'&k2'=v2+'&k3'=v3, ... );

由于URL只进行了encodeURI编码,所以想提交的参数有searchWord = a+b时,变成了a b。

解决办法:

ajax.post( url, params,....)

其中params是对象。

原因:如果参数是对象或数组时,组件库已经帮你进行encodeURIComponent了。 而如果你仅仅是字符串,组件库什么也没做,所以到后端时就把特殊字符给过滤了。

encodeURI()用法

该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。

该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#

提示:如果 URI 组件中含有分隔符,比如 ? 和 #,则应当使用 encodeURIComponent() 方法分别对各组件进行编码。

例子:document.write(encodeURI("http://www.w3school.com.cn")+ "
") document.write(encodeURI("http://www.w3school.com.cn/My first/")) document.write(encodeURI(",/?:@&=+$#")) //批注:只转换域名后面的部分,并且对,/?:@&=+$#不处理。 // http://www.w3school.com.cn // http://www.w3school.com.cn/My%20first/ // ,/?:@&=+$#

decodeURI() 函数可对 encodeURI() 函数编码过的 URI 进行解码。

encodeURIComponent()用法

该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。

其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。

提示:请注意 encodeURIComponent() 函数 与 encodeURI() 函数的区别之处,前者假定它的参数是 URI 的一部分(比如协议、主机名、路径或查询字符串)。因此 encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号。

例子:document.write(encodeURIComponent("http://www.w3school.com.cn")) document.write(encodeURIComponent("http://www.w3school.com.cn/p 1/")) document.write(encodeURIComponent(",/?:@&=+$#")) //对比 // http%3A%2F%2Fwww.w3school.com.cn // http%3A%2F%2Fwww.w3school.com.cn%2Fp%201%2F // %2C%2F%3F%3A%40%26%3D%2B%24%23

decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码。

本文网址:http://www.shaoqun.com/a/164024.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

0

java中等效encodeuri_[Java教程]encodeURI 和encodeURIComponent相关推荐

  1. Java中的记录器 - Java日志示例

    Java中的记录器 - Java日志示例 今天我们将研究Java中的Logger.Java Logger提供了java编程的日志记录. 目录[ 隐藏 ] 1 Java中的记录器 1.1 Java Lo ...

  2. Java中的正则表达式 - Java Regex示例

    Java中的正则表达式 - Java Regex示例 欢迎使用Java中的正则表达式.它在Java中也称为Regex.当我开始编程时,java正则表达式对我来说是一场噩梦.本教程旨在帮助您掌握Java ...

  3. Java中apple导入那个包_在Java中,由Java编泽器自动导入而无需在程序中用import导入的包是()。A.java.appletB.java.awtC.j...

    在Java中,由Java编泽器自动导入而无需在程序中用import导入的包是().A.java.appletB.java.awtC.j 更多相关问题 问卷星是一个专业.无限制的免费在线问卷调查.测评. ...

  4. java中 数组声明,java数组声明格式

    java 声明动态数组,java对象数组详解,java中声明数组,java数组声明格式 Java 中数组的声明一维数组的声明: 在 Java 中,数组是独立的对象,有自身的方法,不是变量的集合. 数组 ...

  5. Java中注解学习系列教程-2

    简介 在上一篇文章中,我们讲解了:Java中注解的定义.JDK中内置注解.第三方注解.本文是注解系列教程中的第二篇.来看看今天主要内容:1:注解的分类2:元注解说明3:自定义注解声明一:注解的分类注解 ...

  6. Java中注解学习系列教程-1

    前言: 我们为什么要学习注解? 注解是我们的编程更简洁明了.spring boot的流行也带动了注解.spring boot中就使用了大量的注解来减少配置.我们在使用spring boot开发时候,感 ...

  7. java中等效encodeuri_encodeURI来解决URL传递时的中文问题

    在AJAX浏览器来进行发送数据时,一般它所默认的都是UTF-8的编码. 使用JQUERY中所提供的方法来做操作 encodeURI function verify() { //解决中文乱麻问题的方法1 ...

  8. java中的service层教程_Service 层实现

    一.实验介绍 1.1 实验内容 本节课程主要利用 Spring 框架实现 Service 层. 1.2 实验知识点 Spring 框架 1.3 实验环境 JDK1.8 Eclipse JavaEE 二 ...

  9. java中flush 函数,Java DataOutputStream.flush()类型

    DataOutputStream(OutputStream out)构造函数 DataOutputStream的DataOutputStream.flush()具有以下语法. public void ...

最新文章

  1. CentOS 7部署OpenStack(9)—部署dashboard
  2. php编写函数6,编写自己的PHP扩展函数
  3. 九妹带你走向 架构师
  4. HAPPY2020暑假训练前复习
  5. 中兴zxr10路由器重启命令_蒲公英路由器刷第三方固件(一)
  6. JavaScript中的类方法、对象方法、原型方法
  7. Matlab图形修饰之裁剪处理
  8. 流媒体服务器搭建详解
  9. python的安装以及使用和文本编译器的安装使用
  10. java学习资料免费下载(持续更新ing)
  11. KUKA力控软件使用问题介绍
  12. java空瓶换饮料的程序实现
  13. Python第一课:print()函数、变量与赋值
  14. [Pandas] 分组比例计算求和
  15. 推荐:Nginx 会话黏着一致性解决
  16. iframe父页面子页面相互调用方法
  17. MySQL - 04.数据控制语言(Data Control Language,DCL)
  18. 祝贺Phyllis Turner女士成为世界上最年长的硕士!
  19. 高德地图开发(三、地图marker点标记)
  20. Electron-vue 安装步骤

热门文章

  1. 装完服务器打补丁,看看有谁比我更无聊~
  2. Failed to connect to github.com port 443 after 21035 ms: Timed out
  3. 解决ssh: connect to host github.com port 22: Connection refused
  4. 基于php+mysql购物商城 校园二手商品 图书鲜花商城 毕业设计(2)分类
  5. 黄金矿工--回溯算法
  6. MIT cheetah make时 error: ‘ioctl’ was not declared in this scope
  7. 两个曲柄滑块机构组成简单机械系统
  8. SAP 教程之 05 如何创建 IDOC 基本类型文档?
  9. 不得不吐槽一下《IOS开发指南》关东升
  10. xp系统安装教程图解