1. 程式人生 > >URL中引數值帶有中文的解決方案

URL中引數值帶有中文的解決方案

在專案中,總是難以避免url中帶中文的情況.

後臺生成的Url中帶有中文:

則中文值應該用URLEncoder.encode進行編碼

serviceName = URLEncoder.encode(serviceName,"utf-8");
    private String makeReturnUrl(String pString, String Dstring, String yString, String serviceName, String serviceId) throws ItrusException{
        long time = System.currentTimeMillis();
        String
text = pString + Dstring + yString + time ; String hmacByOurs = MD5.sign(text, appSecretOurls, "utf-8"); if (StringUtils.isNotBlank(serviceName)) { try { serviceName = URLEncoder.encode(serviceName,"utf-8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block
e.printStackTrace(); } } if (StringUtils.isNotBlank(serviceId)) { try { serviceId = URLEncoder.encode(serviceId,"utf-8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } String
url = "?pes=" + pString + "&des=" + Dstring + "&yfs=" + yString + "&timestamp=" + time + "&sec=" + hmacByOurs + "&sen=" + serviceName + "&sei=" + serviceId; return url; }

生成的連結

http://127.0.0.1:8080/xxxx/from?pes=157&des=158&yfs=161&timestamp=1527579010896&sec=f4e9ce5f1ecf86941db3495089a3f8fa&sen=%E6%B5%8B%E8%AF%95%E4%B8%9A%E5%8A%A1%E5%90%8D%E7%A7%B0&sei=%E6%B5%8B%E8%AF%95%E4%B8%9A%E5%8A%A1%E7%BC%96%E5%8F%B7001

在tomcat中設定uri的編碼方式

 <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8" />