jsoup 라이브러리 또 질문 있습니다.

lalupo20의 이미지

회원가입 기능을 구현했는데요.

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 입니다.

lalupo20의 이미지

홈페이지 인코딩 euc-kr 사용하고 있는 것으로 확인했습니다.

peecky의 이미지

URLDecoder.decode 함수는 "%EA%B0%80%EB%82%98%EB%8B%A4" 같은 값을 "가나다"로 바꿔주는 함수일텐데요.

그냥 .data("name", name_value) 형식으로 호출하면서 name_value값을 EUC-KR로 인코딩 된 값을 주면 되지 않을까요?

lalupo20의 이미지

.data("name",URLEncoder.encode(nameForm.getText().toString(), "utf-8"))
 
 
.data("name",URLEncoder.encode(nameForm.getText().toString(), "euc-kr"))

둘다 해봤는데 안되요...

peecky의 이미지

1. 안된다라고 하지 마시고 어떤 증상이 일어나는지 말씀해보세요.

2. URLEncoder.encode(nameForm.getText().toString(), "utf-8")과 URLEncoder.encode(nameForm.getText().toString(), "euc-kr")의 리턴값은 확인해보셨나요?

3. 왜 URLEncoder.encode() 함수를 사용할 생각을 하셨나요? 보통 이런 라이브러리들은 .data() 함수 자체적으로 data encoding하는 기능은 가지고 있을텐데요.

lalupo20의 이미지

1. 인코딩을 해서 결과를 보면 한글이 깨진채로 출력됩니다.
2. 확인해봤습니다. 제가 지금 놋북을 가방에 넣어둔 상태라 코드를 못보는데, euc-kr로 인코딩하면 앞에서 말씀 하신 이런 "%EA%B0%80%EB%82%98형식으로 나오는거 같고 utf-8형식으로 인코딩하면 궮뜝 이런식으로 깨지구요. 인코딩을 안하면 디버깅시 정상적으로 한글이 들어 있는것이 확인되지만 회원 가입해서 닉네임을 확인해보면 깨져서 나오구요.
3. URLEncoder기능은 제가 제 코드를 보니 다른 부분에 사용했길래(몇년전에 만들었던 어플이라 가물가물 합니다.) 시도해 본 함수입니다. 추가로 인코딩 하는 다른 방법을 찾아서 getBytes("euc-kr") 같은 함수도 시도해봤는데 깨져서 나오는건 같았습니다.

peecky의 이미지

jsoup API 문서 보니까 postDataCharset()라는 함수가 있던데, .data()에 euc-kr 인코딩 된 값을 직접 넣는게 아니라, postDataCharset() 함수로 jsoup이 데이터를 인코딩할 캐릭터셋을 지정하는 것 같습니다.

postDataCharset("euc-kr")로 해보세요.

lalupo20의 이미지

오 집에 가서 해볼께요. 감사합니당

lalupo20의 이미지

근데 euc-kr이 아니라 EUC-KR로 해줘야 하네요.

사랑합니다

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.