window.location.hash在firefox下中文自动转码为UTF-8问题
1.window.location.hash
window.location.hash这个属性主要是读取和写入网页位置的,我们经常会用来控制网页单页面跳转或者是控制网页位置。然而这个属性在firefox下遇到中文时却会被自动转码为UTF-8,这是火狐等相似浏览器对中文url的一些处理的不同。以下介绍一个方法可以fixed掉这个问题。
2.解码函数
前面已经提到,firefox喜欢帮我们把中文转换成utf-8的编码格式,那么我们只用使用合适的解码函数对其解码皆可。
javascript中有三个编码函数escape,encodeURI,encodeURIComponent,而其对应相应解码函数分别为:unescape,decodeURI,decodeURIComponent。
因为其只会匹配相应编码的字符串,所以我们可以大胆的使用解码函数,不用担心未编码的字符串解码出奇怪的数据。
只需做如下处理便能解决这个问题:
var hash =decodeURIComponent(window.location.hash);