상세 컨텐츠

본문 제목

자바, 안드로이드 java android URL주소 영문이외의 한글이나 일본어 문자열이 들어간 주소가 안될때 'UTF-8'로 주소를 인코딩하여 읽을수 있게 해결하기 관련

본문

반응형
728x170

 

 

 

 

=================================

=================================

=================================

 

 

 

 

 

 

자바에서 url 주소를 읽어들일때 영문을 이외에 일본어나 한글이 섞여 들어간 주소가 있으면 주소를 읽지 못하는 현상이 발생한다.

이문제를 기호부분을 빼고 텍스트 부분을 'utf-8' 로 인코딩하여 주소를 다시 넣어주면 영문이외의 다른 문자가 섞여 들어가도 주소를

읽을수 있을 것 이다.

 

java 함수 부분.

 

 

//get방식 utf8방식으로 읽어 들이기

public String getUrlStrEncoding_utf8(String url)

{

String strUrl = url;

String strGet = "";

 

String token  = "";

 

int idx_get = strUrl.indexOf("?");

 

 

//-------------------------------------------------------

//변수, 값을 utf-8로 변경

 

if(idx_get != -1)

{

strGet = strUrl.substring(idx_get+1);

strUrl = strUrl.substring(0, idx_get);

 

StringTokenizer stGet = new StringTokenizer(strGet, "&");

 

String s1 = "";

String s2 = "";

 

int idx_val = 0;

 

strGet = "";

 

while(stGet.hasMoreTokens())

{

if(strGet.length() > 0)

{

strGet = strGet + "&";

}

 

token = stGet.nextToken();

 

idx_val = token.indexOf("=");

 

if(idx_val != -1)

{

s1 = token.substring(0, idx_val);

s2 = token.substring(idx_val + 1);

 

try 

{

s1 = URLEncoder.encode(s1, "utf-8");

s2 = URLEncoder.encode(s2, "utf-8");

}

catch (UnsupportedEncodingException e) 

{

// TODO Auto-generated catch block

e.printStackTrace();

}

 

strGet = strGet + s1 + "=" + s2;

}

else

{

try 

{

strGet = strGet + URLEncoder.encode(token, "utf-8");

}

catch (UnsupportedEncodingException e) 

{

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

 

strGet = "?" + strGet;

}

 

 

//-------------------------------------------------------

//주소를 utf-8로 변경 로드

 

StringTokenizer stUrl = new StringTokenizer(strUrl, "/");

 

while(stUrl.hasMoreTokens())

{

token = stUrl.nextToken();

 

if(token.indexOf("http") != -1)

{

strUrl = token+"/";

continue;

}

 

try 

{

strUrl = strUrl + "/" +URLEncoder.encode(token, "utf-8");

}

catch (UnsupportedEncodingException e) 

{

// TODO Auto-generated catch block

e.printStackTrace();

}

}

 

return strUrl+strGet;

}

 

 

 

 

 

=================================

=================================

=================================

 

 

반응형
그리드형


관련글 더보기

댓글 영역