关于URL encode

在HTML Javascript中,对URL进行加解码时要点:

1.在Javascript中String.charCodeAt()获得的编码为Unicode(big-endian);在进行URL encode或decode时一般为UTF编码格式。故在进行URL encode或decode时需进行转码。

<script language="javascript">
	var string = '我';
	
	var utftext = "";
	for (var n = 0; n < string.length; n++) {
			var c = string.charCodeAt(n);
			if (c < 128) {
					utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
					utftext += String.fromCharCode((c >> 6) | 192);
					utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
					alert("0:" + c);
					alert("1:" + ((c >> 12) | 224));
					utftext += String.fromCharCode((c >> 12) | 224) ;
					
					//取低6位
					
					alert("2:" + (((c >> 6) & 63) | 128));
					utftext += String.fromCharCode(((c >> 6) & 63) | 128);
					
					alert("3:" + ((c & 63) | 128));
					utftext += String.fromCharCode((c & 63) | 128);
			}
	}

	alert(escape(utftext));
	alert(escape(String.fromCharCode(230)) + escape(String.fromCharCode(136)) + escape(String.fromCharCode(145)));
	alert(escape(String.fromCharCode(230) +  String.fromCharCode(136)  +  String.fromCharCode(145)));	

</script>


2. Unicode(big endian) 到UTF转换过程

我25105(10进制),6211(16进制) unicode-big-endian<--在javascript 中String.charCodeAt获得的编码格式
 87654321 87654321 
  1100010 00010001
               110  c>>12 
          11100000  |224  取13位到18位,加111
          11100110  %E6

         110001000  c>>6
            111111  &63   取7位到12位
              1000   
          10000000  |128  加10
          10001000  %88

            111111  &63   取7位到12位
             10001
          10000000  |128  加10
          10010001  %91

3. ASCII,Unicode,Unicode(big enian),UTF文件区别

文件头(2或3字节)

UNICODE   FFFE

UNICEDE(big endian)  FEFF

UTF   EFBBBF

ASCII  无识别头


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值