http://www.androidpub.com/index.php?mid=android_dev_qna&document_srl=2173522
원문 질문 글입니다.. 리플로 달려니 이상하게 안달아져서 새로 게시물 올립니다..
---------------------------------------------------------------------------------------------------------------
답변주신 두분 감사합니다~
먼저.. 저도 단말에서 인코딩 후 웹에서 디코딩해서 하는 방식을 사용해봤는데요.. 저는 잘 안되더군요 ;;
이라슈님께서 링크 걸어주신 페이지도 단말에서 인코딩후 웹에서 디코딩 하는 방식이네요..
제 생각에 해당 방법은..
어플에서 한글 문자열을 UTF-8로 인코딩 변경해서 웹으로 보내고.. 웹에서 GET으로 받아들일떄 URL 주소의 경우 한글이
ISO-8859-1 인코딩 방식이므로 이 인코딩 방식을 UTF-8로 다시 변경해서 사용하는 방법인거 같은데.. (맞나요?)
일단.. 링크 걸어주신 페이지로 DB접근은 잘 됩니다..~
그런데.. 응답받은 페이지에 요청보낸 한글을 어플의 텍스트뷰로 한번 출력해보니.. 출력은 안되네요 ;; 이건 또 왜이런건지 ;; 아우 ㅠㅠ
(그냥 아무런 글자도 안떠요 ;)
PC의 웹브라우저에서 해당 주소로 들어가면.. 역시나 글자가 깨지는군요..
(아마도 앱에서 처럼 한글을 UTF-8 인코딩으로 변경하지 않았는데 웹에서는 이를 다시 UTF-8로 변경하려해서 그런가봐요..)
물론 지금 DB 검색만 되면 되기때문에 상관은 없습니다만.. 왜 화면에 출력이 안되는지 궁금하네요 ;;;;
-----------------
또 하나... 앱에서 인코딩하고 웹에서 디코딩할때.. 인코딩 방식을 utf-8이 아닌 euc-kr로 해봤는데.. 이건또 안되네요 ㅡㅡ;;
왜 안되는거죠 ㅠㅠ ;;;;;;;;;;;;;
혹시 문자열 인코딩 변경간에 서로 데이터를 잃어버리는 조합이 있나요??
---------------------
지금까지의 내용을 종합하면 이렇습니다.
1. 안드로이드 자체는 유니코드
2. JSP페이지에 한글을 GET방식으로 요청( UTF-8로 인코딩)
3. JSP페이지에서 이를 ISO-8859-1 인코딩 방식으로 읽고 UTF-8 인코딩으로 변경
4. 이 한글을 이용해 DB접근하니 접근 잘됨. (참고로 DB는 UTF-8 인코딩 방식)
5. 앱에서 응답 결과 페이지를 한줄씩 읽어 TextView에 한번 출력해보았음.. (한글 부분만 출력 안됨.. DB 검색 결과는 출력됨)
다른 시도.....
1. 위의 2번과 3번 진행시 UTF-8이 아닌 EUC-KR로 인코딩 변경해보았음..
2. 결과... 앱애서의 출력도 이상하고 DB검색도 안됨..
3. DB검색의 경우 DB가 UTF-8 인코딩 방식이라서 그런가 싶기도 하지만.. (맞나요?)
4. 앱에서 출력해볼때 역시나 한글만 안나옴 ㅠ
______________
도대체.. 뭐때문에 이런걸까요 ㅠㅠ 왜 앱에서 JSP 응답 페이지를 출력하면 한글만 안나올까요 ㅜㅜ?
갑자기 드는 생각인데.. 혹시 이것도 상관이 있는지요..
JSP에서 응답해주는 페이지의 인코딩 방식과 안드로이드 자체 인코딩 방식이 다르기 때문에...
참고로 JSP 페이지 자체의 인코딩 방식은 EUC-KR 입니다.
하.. 질문이 길면 답변이 잘 안달리던데 ㅠ...
먼저 여쭤봐야 겠네요.
1. 각각의 웹페이지(html, jsp)의 인코딩은 뭐로 사용하시나요?
2. 웹서버에서 request 객체의 인코딩 설정은 어디서 하나요? 컨트롤러? 아님 각각의 페이지?
1번이 utf-8일 경우와 2번이 컨트롤러일 경우 답변을 드리면
get방식으로 한글 파라미터를 넘길때 URLEncoder를 통해서 인코딩 하지 않으시려면
톰캣의 server.xml에서 connector 태그에 URIEncoding="utf-8" 이라는 속성을 주면 해결이 됩니다.
만약 이 부분을 못 건드리시면
앱 단에서 파라미터만 URLEncoder를 통해서 인코딩 해서 보내기만 됩니다.
웹단에서는 다시 디코딩 할 필요 없습니다.
컨트롤러를 통해서 이미 디코딩 되어 오기 때문에 이것을 다시 디코딩하면 문자가 깨지죠.
인코딩/디코딩은 간단 합니다.
한쪽에서 인코딩했으면 받는 쪽에서 1번만 디코딩 하면 됩니다.
답변 주신분들 감사드립니다!!!
한글 ????로 깨지는 경우도 많더군요 ㅠ
일단.. jsp페이지 인코딩은 euc-kr 이네요.. 이클립스에서 자동으로 생성한 페이지 그대로 두었군요.
request 객체 인코딩 설정은 각각 페이지 마다 하게 해뒀습니다.
윽.. jsp 페이지 자체 인코딩 문제일수도 있겠군요 ㅠ
그리고 추가적으로 질문하고픈게 있는데..
제가 현제 cafe24의 jsp호스팅을 받고 있습니다.
그런데 서버 환경을 보니
서버환경
- EUC-KR : 제로보드4, 그누보드4 설치가능, PHP4, MySQL4.X 지원
- UTF-8 : 제로보드XE 자동설치 지원
PHP5, MySQL5.X 지원
이렇게 되있고.. 처음에 제로보드 XE때문에 utf-8로 세팅해두었습니다.
여기에서의 서버 환경이란건 어떤걸 뜻하나요??
일단 지금은 테스트를 못해봐서.. 조금있다 해보고 다시 글 달겠습니다~




음.. 인코딩 문제는 해결이 안될때는 경우의 수를 다 따져봐야 하는 수가 생기는 문제죠... 한번 꼬이면 골때리는 문제라..
일단 가장 마지막 의견에서 jsp 페이지 인코딩을 utf-8로 변경해보세요. 웹페이지 인코딩 방식때문에 한글이 깨지는 경우도 있습니다.
인코딩 방식은 모든 관련 기기를 통일해 주는것이 좋구요. 어디는 utf-8, 어디는 euc-kr 이렇게 하면 꼬이기 쉽습니다.
하나더 잘 간과해버리는 부분이 인코딩된 문자를 다시 인코딩 하면 글자가 깨집니다.
예를들면 서버에 물려있는 프레임워크에서 인코딩 작업을 해버리는데 내가 작업하는 부분에서 인코딩 되있는 부분을 또 인코딩해버리면
한글은 ???? 이런식으로 깨져버리죠 (물론 다르게 깨질수도 있습니다..)
확실한 답변을 드리지 못해 죄송하네요.. 최대한 많은 방법으로 시도를 해보시는 것밖에는 제가 드릴수있는 답변이 없네요..