jsoup 라이브러리 또 질문 있습니다.
글쓴이: lalupo20 / 작성시간: 월, 2024/07/08 - 3:28오후
회원가입 기능을 구현했는데요.
joinForm = Jsoup.connect(url) .data("user_id",id) .data("check_user_id", "ok") .data("password", pw) .data("password1", pw2) .data("name", nameForm.getText().toString()) .data("email", emailForm.getText().toString()) .data("open_email", getCheckBoxState(openEmailCheckBox)) .data("homepage", homepageForm.getText().toString()) .data("open_homepage", getCheckBoxState(openHomepageCheckBox)) .data("handphone", handphoneForm.getText().toString()) .data("open_handphone", getCheckBoxState(openHomepageCheckBox)) .data("mailing", getCheckBoxState(mailingCheckBox)) .data("comment", introduceForm.getText().toString()) .data("open_comment", getCheckBoxState(openCommentCheckBox)) .data("openinfo", getCheckBoxState(openInformationCheckBox)) .data("group_no", "" + 1) .data("mode", "join") .followRedirects(true) .referrer("http://www.laromacorea.com/bbs/member_join.php") .method(Connection.Method.POST) .execute();
위와 같은 코드로 회원가입은 되는데
닉네임이 깨져서 나옵니다. (피씨로 홈페이지 들어가서 로그인 해보면)
궭뚫 이런 식으로?
그래서
.data("name",URLDecoder.decode(nameForm.getText().toString(), "euc-kr")) or .data("name",URLDecoder.decode(nameForm.getText().toString(), "utf-8"))
위와 같은 코드를 사용해 봤는데 효과 없었구요.
이런 문제는 어떻게 해결해야 하나요?
홈페이지 주소는 http://www.laromacorea.com/index1.html 입니다.
Forums:
추가 사항 남깁니다.
홈페이지 인코딩 euc-kr 사용하고 있는 것으로 확인했습니다.
URLDecoder.decode 함수는 "%EA%B0
URLDecoder.decode 함수는 "%EA%B0%80%EB%82%98%EB%8B%A4" 같은 값을 "가나다"로 바꿔주는 함수일텐데요.
그냥 .data("name", name_value) 형식으로 호출하면서 name_value값을 EUC-KR로 인코딩 된 값을 주면 되지 않을까요?
.data("name",URLEncoder
둘다 해봤는데 안되요...
1. 안된다라고 하지 마시고 어떤 증상이 일어나는지
1. 안된다라고 하지 마시고 어떤 증상이 일어나는지 말씀해보세요.
2. URLEncoder.encode(nameForm.getText().toString(), "utf-8")과 URLEncoder.encode(nameForm.getText().toString(), "euc-kr")의 리턴값은 확인해보셨나요?
3. 왜 URLEncoder.encode() 함수를 사용할 생각을 하셨나요? 보통 이런 라이브러리들은 .data() 함수 자체적으로 data encoding하는 기능은 가지고 있을텐데요.
조금더 상세하게 증상 올려봅니다.
1. 인코딩을 해서 결과를 보면 한글이 깨진채로 출력됩니다.
2. 확인해봤습니다. 제가 지금 놋북을 가방에 넣어둔 상태라 코드를 못보는데, euc-kr로 인코딩하면 앞에서 말씀 하신 이런 "%EA%B0%80%EB%82%98형식으로 나오는거 같고 utf-8형식으로 인코딩하면 궮뜝 이런식으로 깨지구요. 인코딩을 안하면 디버깅시 정상적으로 한글이 들어 있는것이 확인되지만 회원 가입해서 닉네임을 확인해보면 깨져서 나오구요.
3. URLEncoder기능은 제가 제 코드를 보니 다른 부분에 사용했길래(몇년전에 만들었던 어플이라 가물가물 합니다.) 시도해 본 함수입니다. 추가로 인코딩 하는 다른 방법을 찾아서 getBytes("euc-kr") 같은 함수도 시도해봤는데 깨져서 나오는건 같았습니다.
jsoup API 문서 보니까
jsoup API 문서 보니까 postDataCharset()라는 함수가 있던데, .data()에 euc-kr 인코딩 된 값을 직접 넣는게 아니라, postDataCharset() 함수로 jsoup이 데이터를 인코딩할 캐릭터셋을 지정하는 것 같습니다.
postDataCharset("euc-kr")로 해보세요.
오 집에 가서 해볼께요. 감사합니당
오 집에 가서 해볼께요. 감사합니당
성공했습니다.
근데 euc-kr이 아니라 EUC-KR로 해줘야 하네요.
사랑합니다
댓글 달기