startActivityForResult(intent) 를 사용해서
파일 탐색기를 열어서 파일 첨부를 하는 액티비티인데요
대충 코드는 이렇습니다.
String filename = intent.getDataToString().replace("file://","") // file:// 가 앞에 붙으면 경로를 찾을 수 없어서 변환처리.
requestPart.addPart(file); // 위의 String 을 사용해서 file객체를 생성하여 request에 추가.
해서 이 Request 객체를 서버로 보내는건데요
이게
[ 일반적인 영문으로된 경로, 영문 이름으로 된 파일 ]
같은 경우에는 정상적으로 잘 전송이 됩니다.
하지만
[ mp3 파일, 경로나 파일명에 한글, 공백이 있는 파일 ]
같은 경우에는 파일 경로를 찾을 수 없다는 메시지가 출력되는군요.
로그를 찍어보니 String 생성 과정에서 나온 값이
한글만 /mnt/sdcard/&7^65%6/asdf.jpg 뭐 이런식으로 특수문자랑 숫자가 섞여서 다 깨져버립니다...
mp3파일이야 mediastore 사용하면 되니까 상관없지만
일반 파일같은경우 문제가 되네요....
이번 허니컴에서 mediastore.files 가 추가된걸로 아는데
현재 개발환경은 프로요입니다. 타겟도 프로요로 잡았구요
저 깨진 값을 현존하는 대부분의 인코딩 포맷으로 돌려보니 3개 말고는 다 위와같은 값이 나왔습니다.
그나마도 나머지 3개는 이상한 한자나 외계어가 나오구요... 인코딩 문제는 아닌듯합니다....
많은 답변 기다리겠습니다 (__)




자답입니다.
Uri.decode(string);