마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 db연동 결과값으로 조건문을 줄 경우 인식을 못합니다.

0 추천

php와의 연동으로 로그인시 php쪽에서 비밀번호 일치여부를 확인하여 echo"success"로 값을 받아와서 조건문으로 다음화면으로 넘겨주려는데 자꾸 조건문에서 가져온 success를 success로 인식못하고 else문으로 갑니다 ...log.d로 찍어봐도 밑에 로그캣에 보시는대로 success가 뜨는데도 else문으로가버립니다 . 

문제는 이 프로젝트안에 모든 액티비티에서 동일한 이상현상이 있습니다 값을 가져와서 뿌려주는건 상관없는데 if문으로 조건을 주려고하면 그냥 무조건 else문으로 가버리는거죠 로그d로 다찍어봐도 분명 모든것이 가져오는 값들은 정확합니다 ... 이프로젝트파일을 새로만들어야 해결될까요? 아니면 혹시 해결하신분이있는지 궁금해서 질문올립니다 ..이것 때문에 며칠동안 로직들은 다짜놨는데 너무나도 이상한부분에 막혀 미칠것같습니다 ㅠㅠ 

익명사용자 님이 2017년 6월 13일 질문

1개의 답변

0 추천
 
채택된 답변
byte order mark나 인코딩 이슈로 안 나올 수 있습니다. 예를 들어  UTF-16으로 된 String이라면 로그로 Success라고 찍혀도 byte로 보면  다른 값이 될 수 있습니다.

result값을 getBytes로 가져와 hex dump 해보시고 맞춰 보시는게 좋을 듯 합니다.
익명사용자 님이 2017년 6월 13일 답변
2017년 6월 13일 수정
해결했습니다 결국 로그값을 복붙해보니 \uFEFF란게 안보이는데 포함되어있더라고요 .. s.trim().equals("\uFEFFsuccess")로하니 해결됬습니다 감사합니다.
byte order mark(https://ko.wikipedia.org/wiki/%EB%B0%94%EC%9D%B4%ED%8A%B8_%EC%88%9C%EC%84%9C_%ED%91%9C%EC%8B%9D
) 가 붙었었군요..ㅎㅎ 수정하셨다니.. 다행이네요..
하지만.. "\uFEFFsuccess" 로 비교하는건 좀 아닌듯 한데요..

별도 함수로 trim 하시는게 깔끔할 듯 합니다.
https://stackoverflow.com/questions/21891578/removing-bom-characters-using-java
...