Java를 사용하여 적절한 인코딩에서 HTML 페이지를 검색하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1255730

  •  12-09-2019
  •  | 
  •  

문제

페이지 인코딩에서 HTML 페이지를 사용하여 HTTP 스트림을 어떻게 읽을 수 있습니까?

다음은 HTTP 스트림을 얻는 데 사용하는 코드 조각입니다. inputStreamReader 인코딩 선택적 인수가 있지만, 그것을 얻는 방법에 대한 아이디어는 없습니다.

URLConnection conn = url.openConnection();
InputStream is = conn.getInputStream();
BufferedReader d = new BufferedReader(new InputStreamReader(is));
도움이 되었습니까?

해결책

웹 페이지를 검색하는 것은 합리적으로 복잡한 프로세스입니다. 그렇기 때문에 라이브러리와 같은 방법입니다 httpclient 존재하다. 제 조언은 당신이 정말로 설득력있는 이유가 없다면 httpclient를 사용한다는 것입니다.

다른 팁

연결이 설정되면

urlConnection conn = url.openConnection ();

url.getContentEncoding ()을 통해 인코딩 메소드 이름을 얻을 수 있으므로이 문자열을 inputStreamReader ()로 전달하여 코드가

bufferedReader d = new bufferedReader (new inputStreamReader (is, url.getContentEncoding ());

짧은 대답은입니다 urlConnection.getContentEncoding (). 정답은 Cletus가 제안한 것입니다. 강력한 이유가 없다면 적절한 타사 도서관을 사용하십시오.

최근에 해결해야 할 매우 비슷한 문제가있었습니다. 다른 대답과 마찬가지로, 나는 또한 httpclient et al. 그러나 해당 라이브러리를 사용하려면 다운로드하려는 파일의 인코딩을 선불로 알아야합니다. 그렇지 않으면 검색된 HTML 파일의 변환은 읽을 수없는 문자로 생성됩니다.

HTML 파일의 인코딩은 HTML 파일 자체에만 지정되기 때문에이 방법은 작동하지 않습니다. HTML 버전에 따라 인코딩은 XML 헤더, 두 개의 다른 헤드 메타 태그 요소 등과 같은 여러 가지 방법으로 지정됩니다.이 접근법을 따르는 경우 다음을 수행해야합니다.

  1. 파일을 다운로드하고 컨텐츠를보고 HTML 컨텐츠를 구문 분석하여 인코딩을 파악하십시오.
  2. 적절한 인코딩을 지정하려면 파일을 두 번째로 다운로드하십시오.

특히 적절한 인코딩 문자열을위한 HTML 컨텐츠를 구문 분석하는 것은 오류가 발생하기 쉽습니다. 대신, 나는 당신이 JSOUP, 그것은 당신을 위해 일을 할 것입니다. 따라서 httpclient를 통해 파일을 다운로드하는 대신 jsoup을 사용하여 파일을 검색하십시오. 또한 JSOUP은 HTML 페이지의 다른 부분에 직접 액세스 할 수있는 멋진 API를 제공합니다 (예 : 페이지 제목).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top