解決url中文接收到是%加數字,解碼

問題起始:

我在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次解碼就好。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章