解決url中文接受到是%加數字,解碼
阿新 • • 發佈:2018-12-20
問題起始:
我在js中通過get方法傳送一個帶有中文的url
http://xxxxxxxxxx:8080/core/proxy.html?&XNAME=延安市
結果我在另一邊收到的url是http://xxxxxxxxxx:8080/core/proxy.html?&XNAME=%D1%D3%B0%B2%CA%D0
我希望通過location.href 拿到這個url後解析這個引數,拿到這個延安市的中文。
解決過程:
之前我不知道這個是什麼格式的字元。。之後查資料發現百度可以解析,將這個字元賦值到url
https://www.baidu.com/s?wd=%D1%D3%B0%B2%CA%D0
之後才發現原來%是用來分割中文的,而每一個字是裡面的十六進位制
而且這個是gb2312的,不同的編碼格式,轉成十六進位制,比如
中國會被編碼成
%D6%D0%B9%FA GBK GB2312 GB18030
%E4%B8%AD%E5%9B%BD UTF-8
%92%86%8D%91 Big-5等
%C3%E6%B9%F1 euc-jp等
如果是UTF-8可以直接在js中使用,decodeURI來解碼。
decodeURI("%E6%98%A5%E8%8A%82")
而這裡是gb2312的,查了很多資料,沒有可以在js解決的
那我只能在java後端進行處理了、
我先測試了一下延安市encode後是否是這個。
發現是一樣的,那麼我們解碼。
然後再傳到之前的前臺頁面。
我們將十六進位制通過url傳到後臺,需要注意
進行2次編碼,否則會亂碼的。
後臺的話,如上圖2次解碼就好。