iOS 只对URL中的中文进行转码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 只对URL中的中文进行转码相关的知识,希望对你有一定的参考价值。

参考技术A 在公司项目中,视频播放的时候,url可能已经utf-8转码了,也可能未转码而包含中文,对url中的中文进行转码时,如果url中的中文已经是utf-8转码了,那么会二次转码,在项目需求中url就无效

如果知道url中的中文既可能已经转码,也可能没有转码,那么使用如下的方法,当不管url中的中文是否已经utf-8转码了,都可以解决将中文字符转为utf-8的问题,且不是二次转码

对url中的参数进行转码

参考技术A url参数进行转码的方式:
1.encodeURI()
2.encodeURIComponent()
3.Base64.encode
示例1:
var url = " https://www.baidu.com/index.php?t= 仪表盘&&ss=dash&&vv=星星"
encodeURI(url)
-->

示例2:
var url = " https://www.baidu.com/index.php?t= 仪表盘&&ss=dash&&vv=星星"
encodeURIComponent(url)
-->

示例3:
是只对参数进行转码,使用split对url进行拆分
var url = " https://www.baidu.com/index.php?t= 仪表盘&&ss=dash&&vv=星星"
var newSearch = url.split('?')[1].split('&&').map(item =>
const params = item.split('=');
return $params[0]=$encodeURIComponent(params[1])
).join('&&');
url = $url.split('?')[0]?$newSearch ;
console.log(url)

注意:如果转码过后的url需要打开一个新的页面,chrome上会对转码的url进行解码,这样会达不到相应的转码效果。
可以使用Base64.encode替换encodeURIComponent

var url = " https://www.baidu.com/index.php?t= 仪表盘&&ss=dash&&vv=星星"
var newSearch = url.split('?')[1].split('&&').map(item =>
const params = item.split('=');
return $params[0]=$Base64.encode(params[1])
).join('&&');
url = $url.split('?')[0]?$newSearch ;
console.log(url)

类似这样的效果: https://www.baidu.com/index.php?tn=5paH5pyL55qE5Luq6KGo55uY&&sss=ZGFzaGJvYXJkLWFsbDE1NTU2NjQyMjE5MDk=

如果是直接获取网上的url可以
const newSearch = location.search.substring(1).split('&').map(item =>
const params = item.split('=');
return $params[0]=$encodeURIComponent(params[1]) ).join('&');
$location.href.split('?')[0]?$newSearch ;

以上是关于iOS 只对URL中的中文进行转码的主要内容,如果未能解决你的问题,请参考以下文章

对url中的参数进行转码

jmeter参数中的url转码和url解码

Http请求时URL中的中文编码

java对URL中的中文和符号进行UrlEncode转码

ios开发网络学习二:URL转码以及字典转模型框架MJExtension的使用

URL请求中文符号“乱码”(解码转码)解决方式