伝送の過程ではutf-8符号を統一的に採用し,漢字を取得するためにストリームにutf-8符号を採用する

1487 ワード

先日dnsインタフェースが変動したため、dns解析業務のテストを手伝いました.伝送中に乱符号化の問題があったため、伝送中にutf-8符号化を統一的に採用しました.漢字を正常に表示するために、伝送中にストリームもutf-8符号化を採用します.

public static String getPageContent(String url, String strPostRequest) {
		String strUrl = url;
		//  
		StringBuffer buffer = new StringBuffer();
		System.setProperty("sun.net.client.defaultConnectTimeout", "5000");
		System.setProperty("sun.net.client.defaultReadTimeout", "5000");
		try {
			URL newUrl = new URL(strUrl);
			HttpURLConnection hConnect = (HttpURLConnection) newUrl.openConnection();
			// POST 
			if (strPostRequest.length() > 0) {
				hConnect.setDoOutput(true);
				hConnect.setRequestMethod("POST");
				
				OutputStreamWriter out = new OutputStreamWriter(hConnect.getOutputStream(),"utf-8");
				out.write(strPostRequest);
				out.flush();
				out.close();
			}
			//  
			BufferedReader rd = new BufferedReader(new InputStreamReader(hConnect.getInputStream(),"utf-8"));
			int ch;
			for (int length = 0; (ch = rd.read()) > -1; length++)
				buffer.append((char) ch);
			rd.close();
			hConnect.disconnect();
			return buffer.toString().trim();
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}


説明:postメソッドでurlにアクセスし、伝送中にストリームはutf-8符号化を採用する.