1、通过HttpURLConnection得到的数据中文乱码
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod(method);
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.setUseCaches(false);
urlConnection.setConnectTimeout(defaultTimeout);
urlConnection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
urlConnection.setRequestProperty("Content-Type", "text/plain;charset=UTF-8");
设置一下Content-Type,然后用下面的方式接收数据:
InputStream in = urlConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
2、URLDecoder.decode(line, "UTF-8") 遇到如下异常
java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "+%"
主要原因是% 在URL中是特殊字符,需要特殊转义一下,使用%25替换字符串中的%号,如下:
line = line.replaceAll("%(?![0-9a-fA-F]{2})", "%25");