很早就知道js中encodeURI方法,也很早就用过,但是每次看到它总感觉有些陌生,因为不知道到底是什么原理,和普通的编码到底什么关系, 今天在查看w3c api时又遇到了她,正好有空就多看了几眼,突然一下子对她的认识全部变得清晰了。其实这个方法原来就是这么的基础,这么的简单,像他的名字一样,就是用来对uri进行编码的,原来我之所以不太理解为什么需要这个方法,是因为两点,一个是把她和编码集混淆了,二是没有真正理解http协议url传输的编码, 因为uri本身是采用ascii编码的,所以如果是非ascii编码集的字符在传输时都会被再次编码,编码方法和encodeURI的编码规则相同,编码规则并不是采用utf8等编码集,二是有自己的一套规则,这个就不赘述了,有编码就需要有解码,js中解码方法即decodeURI,理解比较简单。那么如果你服务端采用的java,你应该也会明白为何会存在URLEncoder和URLDecoder方法了吧,因为有自己的编码集。