js、Java的url参数转码(url里中文、特殊符号参数转码)

问题

url中的参数里,除了字母、数字以及".","-","*" 和 "_"这些字符外,其他符号(空格、汉字等)会被认为是不安全字符,因此在传参时需要对参数进行转码,转码后的特殊字符数据是一个或多个十六进制的转义序列。

js转码

js使用JavaScript全局函数 encodeURIComponent

	var basicStr = '123 ABC+-456你好DEF'
	var encodeStr = encodeURIComponent(basicStr)
	console.info(basicStr)
	console.info(encodeStr)

执行结果:

123 ABC+-456你好DEF
123%20ABC%2B-456%E4%BD%A0%E5%A5%BDDEF

Java转码

Java语言使用 java.net.URLEncoder 包里的静态方法 encode

	public static void main(String[] args) throws UnsupportedEncodingException {
		String basicStr = "123 ABC+-456你好DEF";
		System.out.println(basicStr);
		String encodeStr = URLEncoder.encode(basicStr, "UTF-8");
		System.out.println(encodeStr);
	}

执行结果:

123 ABC+-456你好DEF
123+ABC%2B-456%E4%BD%A0%E5%A5%BDDEF

这里留意一下,js函数把空格替换为"%20",而Java方法把空格替换为"+"号,它们都是代表空格。

测试

使用转码出来的字符串作为url中的参数请求接口:

/testParam?data=123%20ABC%2B-456%E4%BD%A0%E5%A5%BDDEF

后台接口代码

	@ResponseBody
	@GetMapping("/testParam")
	public Object testParam(String data) {
		try {
			log.info(data);
			return "success";
		} catch (Exception e) {
			return "fail";
		}
	}

控制台结果:

123 ABC+-456你好DEF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值