首頁  >  文章  >  web前端  >  在JS中encodeURI(url)怎樣才能不出現亂碼?

在JS中encodeURI(url)怎樣才能不出現亂碼?

php中世界最好的语言
php中世界最好的语言原創
2018-03-09 10:52:422659瀏覽

這次帶給大家在JS中encodeURI(url)怎麼才能不出現亂碼? ,在JS中使用encodeURI(url)的注意事項有哪些,下面就是實戰案例,一起來看一下。

一般情況下, 發送encodeURIComponent(parmeName)+"="+encodeURIComponent(parmeValue);
接收時, 直接String paramValue = request.getParameter(paramName); //容器自動解碼.

我們知道encodeURIComponent 使用的是UTF-8 編碼規則來編的.
如果request.getParameter(paramName) 時,容器也按UTF-8 解的話,是正確的.根本無須在客戶端
進行二次的encodeURIComponent(...)

如果request.getParameter(paramName),容器沒有按UTF-8 解的話, 結果只有一個,就是亂碼!
容器按什麼編碼來解碼,決定於request.setCharacterEncoding(***) 或伺服器程式配置.

如果你在jsp 程式中,能夠request.setCharacterEncoding("UTF-8"), 並且修改伺服器配置,讓容器在解GET 提交的參數時,使用UTF-8.

客戶端提交前不用二次編碼, 接收時,也只要直接request.getParameter(paramName) 即可

為什麼網路上會有人提出在客戶端對字串重複編碼兩次呢.
如果因為專案需要,不能指定容器使用何種編碼規則來解碼提交的參數, 例如:需要接收來自不同頁面,不地編碼的參數內容時。 (又或者是開發人員被這有點複雜的東東搞得暈頭轉向,不懂得如何正確的去做好這接收參數的工作)
這個時候,在客戶端對參數進行二次編碼,可以有效的避開這個「提交多位元組字元」的棘手問題。
因為第一次編碼,你的參數內容便不帶有多位元組字元了,成了純粹的 Ascii 字串。 (這裡把編第一次的結果叫成[STR_ENC1] 好了。[STR_ENC1] 是不帶有多字節字元的)
再編一次後,提交,接收時容器自動解一次(容器自動解的這次,不管是按GBK 還是UTF-8 還是ISO-8859-1 都好,都能夠正確的得到[STR_ENC1])
然後,再在程式中實作一次decodeURIComponent (Java中通常使用java.net .URLDecoder(***, "UTF-8")) 就可以得到想提交的參數的原值。

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

相關閱讀:

簡述CSS中clearfix 的原理

CSS1與CSS2的常用屬性

怎麼用CSS3製作登入框

以上是在JS中encodeURI(url)怎樣才能不出現亂碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn