2013-08-27 2 views
0

나는이URLEncoder.encode()를 사용하여 String 배열을 보내는 중입니까?

String nearByColgs[]= {"461161","158179","218756","103456","184842","122560","118279"}; 
String interests[] ={"java","cricket"}; 

같은 두 개의 문자열 배열을 가지고 지금 내가 URL.encode를 사용하여 보내려면()

문제가 URL.encode()입니다 만 지원 문자열 예를 들어,

전체 배열을 보낼 수있는 해결 방법은 nearByColgs입니다.

미리 감사드립니다.

+0

콘텐츠를 배열에 전달하려고합니다. 그래서 일부 다른 웹 응용 프로그램은 URL을 디코딩하여 값을 얻을 수 있습니다! –

답변

0

시도 :

URL.encode(java.util.Arrays.toString(nearByColgs) , "UTF-8"); 
+0

배열에서 내용을 전달하고 싶습니다. 이렇게하면됩니까? –

+0

시도해보십시오 ... 직접 본다. 작동하는지 알려 주시기 바랍니다. – codeMan

+0

nearByColgs 배열을 JSON으로 먼저 변환 한 다음 JSON 문자열을 인코딩해야 할 수 있습니다. URL.encode를 사용하여 – codeMan

0

난 당신이뿐만 아니라 URL 인코딩을 사용하여 보낼 생각하지만, 다른 측면에서 또한 그것을 디코딩하고 다시 문자열의 배열의 같은 2 개 변수가 있습니다.

이미 알았으므로 String 배열을 단일 String 변수로 변환해야합니다.

다른 글에서는 String 배열을 단일 String으로 쉽게 변환하는 방법을 보여줍니다. 그러나 그것을 다시 분석하는 방법을 보여주지는 않습니다.

필요한 것은 2 개의 구분 기호 (예 : 쉼표 및 세미콜론)이며, 하나는 배열 내 값을 구분하고 다른 하나는 배열을 구분하는 데 사용됩니다.

StringBuilder b = new StringBuilder(); 
b.append(nearByColgs[0]); 
for (int i=1; i<nearByColgs.length;i++) { 
    b.append(',').append(nearByColgs[i]); 
} 
b.append(';') 
b.append(interests[0]); 
for (int i=1; i<interests.length;i++) { 
    b.append(',').append(interests[i]); 
} 
String concatenated = b.toString(); 
String encoded = URLEncoder.encode(concatenated ,"UTF-8"); 

반대쪽에서 인코딩 된 버전을 다시 디코딩하십시오. 원래의 데이터가 사용되는이 개 분리 문자 중 하나를 포함하지 않는 경우

String decoded = URLDecoder.decode(encoded, "UTF-8"); 
String[] subArrays = decoded.split(";") 

다음이 유일한 작품, 물론

String[] nearbyColgs = subArrays[0].split(","); 
String interests = subArrays[1].split(","); 

으로 다시 원래의 데이터를 복구 할 수 있습니다.

다른 구분 기호 (예 : 'a'와 'b'등)를 사용하거나 더 복잡한 알고리즘을 사용하여 문자열을 연결하고 CSV 표준과 같은 인용 체계를 사용하십시오.

인코딩 논리는 사용되지 않은 2자를 찾고 인코딩 할 문자열의 첫 번째 문자로이 두 문자를 추가하고, 디코딩 측은 인코딩 된 문자열을 수신하고 디코드하여 두 번째 문자를 잘라내어 구분 기호.

사용 된 split 함수는 정규 표현식을 인수로 사용할 수 있으므로 *와 같은 일반형 정규 표현식 문자에주의해야합니다.

즐기십시오!