URL中文传输乱码解决

网页URL的合法字符分成两类

URL元字符:分号(;),逗号(’,’),斜杠(/),问号(?),冒号(:),at(@),&,等号(=),加号(+),美元符号($),井号(#)

语义字符:a-z,A-Z,0-9,连词号(-),下划线(_),点(.),感叹号(!),波浪线(~),星号(*),单引号(),圆括号(()`)

除了以上字符,其他字符出现在URL之中都必须转义,规则是根据操作系统的默认编码,将每个字节转为百分号(%)加上两个大写的十六进制字母。在浏览器地址栏里,浏览器认为%是个转义字符,浏览器会把%与%之间的编码,两位两位取出后进行解码,然后再传递给后端,然后由后端进行再次解码。

一般平台字符集编码方式相同可以使用如下方法编码传输

encodeURI、decodeURI、encodeURIComponent、decodeURIComponent

encodeURI 方法的参数是一个字符串,代表整个URL。它会将元字符和语义字符之外的字符,都进行转义。

decodeURI用于还原转义后的URL。它是encodeURI方法的逆运算。

encodeURIComponent只转除了语义字符之外的字符,元字符也会被转义。因此,它的参数通常是URL的路径或参数值,而不是整个URL

decodeURIComponent用于还原转义后的URL片段。它是encodeURIComponent方法的逆运算。

如果平台编码方式不同可以使用  xxx=encodeURIComponent(base64Encode(encodeURIComponent('中文字符内容')))  方式进行传输,(此处base64xxx为自己实现的base64转码算法)

即在先将中文字符转义后,进行base64操作,然后再次转义进行传输,接收方使用decodeURIComponent(base64Decode(decodeURIComponent(xxx))) 方式解码,顺利解决不同平台导致的乱码现象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心歌技术

打赏不能超过你的早餐钱!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值