|
|
|
|
|
今天測試一張網(wǎng)頁,在PC瀏覽器和安卓手機(jī)上都能正常打開,但是在蘋果手機(jī)上卻打不開,一時無解。
后來經(jīng)過反復(fù)測試,終于發(fā)現(xiàn)了問題,原來是地址包含中文字符的問題!
原來,當(dāng)網(wǎng)址上包含中文字符時,在蘋果手機(jī)上是無法打開的,必須要先進(jìn)行字符編碼。這可能是蘋果手機(jī)瀏覽器不能對中文字符進(jìn)行自動編碼的原因吧,而PC瀏覽器和安卓手機(jī)的瀏覽器則無問題。
那么我們要如何進(jìn)行字符編碼呢?這可以使用js來實現(xiàn)。函數(shù)是這個:
encodeURI()
關(guān)于JavaScript encodeURI() 函數(shù)
定義和用法
encodeURI() 函數(shù)可把字符串作為 URI 進(jìn)行編碼。
語法
encodeURI(URIstring)
參數(shù):URIstring 必需。
描述:一個字符串,含有 URI 或其他要編碼的文本。
返回值
URIstring 的副本,其中的某些字符將被十六進(jìn)制的轉(zhuǎn)義序列進(jìn)行替換。
說明
該方法不會對 ASCII 字母和數(shù)字進(jìn)行編碼,也不會對這些 ASCII 標(biāo)點符號進(jìn)行編碼: - _ . ! ~ * ' ( ) 。
該方法的目的是對 URI 進(jìn)行完整的編碼,因此對以下在 URI 中具有特殊含義的 ASCII 標(biāo)點符號,encodeURI() 函數(shù)是不會進(jìn)行轉(zhuǎn)義的:;/?:@&=+$,#
提示和注釋
提示:如果 URI 組件中含有分隔符,比如 ? 和 #,則應(yīng)當(dāng)使用 encodeURIComponent() 方法分別對各組件進(jìn)行編碼。
實例
在本例中,我們將使用 encodeURI() 對 URI 進(jìn)行編碼:
<script type="text/javascript">
document.write(encodeURI("http://howtostagehomes.com")+ "<br />")
document.write(encodeURI("http://howtostagehomes.com/My first/"))
document.write(encodeURI(",/?:@&=+$#"))
</script>
輸出:
http://howtostagehomes.com
http://howtostagehomes.com/My%20first/
,/?:@&=+$#