最近在做Infoportal集成URL地址遇到一個小小的問題,在URL地址上如果包含有中文參數時,在瀏覽器地址上就會出現亂碼,想到了可能需要把URL參數值轉碼,寫了一段代碼測試一下。但是發現有一個問題,就是用java字符串中的split當分割“?”時,直接報java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0異常,原來這個是轉義字符,稍微修改了一下就好了
String url="http://servername?country=中國";
String[] segment=url.split("\\?");
StringBuilder newUrl=new StringBuilder();
newUrl.append(segment[0]+"?");
String[] argStr=segment[1].split("&");
for(int i=0;i<argStr.length;i++){
String[] args= argStr[i].split("=");
if(args==null ||args.length==0)
continue;
newUrl.append(args[0]);
if(args[1]!=null){
try {
String argValue=URLEncoder.encode(args[1],"UTF-8");
newUrl.append("="+argValue);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
newUrl.append("&");
}
System.out.println(newUrl.toString());
程序





















原URL:http://servername?country=中國
轉碼后的URL:http://servername?country=%E4%B8%AD%E5%9B%BD&