1. 程式人生 > >解決url中文接受到是%加數字,解碼

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