javascript의 decodeURI() 는 java.net.URLEncoder.encode()와 치환에 사용하는 문자열셋이 다르므로 , 와 같은 문자를 제대로 디코딩하지 못하는 문제가 발생하게 된다. 이를 해결하기 위해 java.net.URLDecoder.decode()와 동일한 알고리즘을 가지는 javascript함수를 사용한다.
function decodeURL(str){ var s0, i, j, s, ss, u, n, f; s0 = ""; // decoded str for (i = 0; i < str.length; i++){ // scan the source str s = str.charAt(i); if (s == "+"){s0 += " ";} // "+" should be changed to SP else { if (s != "%"){s0 += s;} // add an unescaped char else{ // escape sequence decoding u = 0; // unicode of the character f = 1; // escape flag, zero means end of this sequence while (true) { ss = ""; // local str to parse as int for (j = 0; j < 2; j++ ) { // get two maximum hex characters for parse sss = str.charAt(++i);
if (((sss >= "0") && (sss <= "9")) || ((sss >= "a")
&& (sss <= "f")) || ((sss >= "A") && (sss <=
"F"))) { ss += sss; // if hex, add the hex character } else {--i; break;} // not a hex char., exit the loop } n = parseInt(ss, 16); // parse the hex str as byte if (n <= 0x7f){u = n; f = 1;} // single byte format if ((n >= 0xc0) && (n <= 0xdf)){u = n & 0x1f; f = 2;} // double byte format if ((n >= 0xe0) && (n <= 0xef)){u = n & 0x0f; f = 3;} // triple byte format
if ((n >= 0xf0) && (n <= 0xf7)){u = n & 0x07; f =
4;} // quaternary byte format (extended) if
((n >= 0x80) && (n <= 0xbf)){u = (u << 6) + (n
& 0x3f); --f;} // not a first, shift and add 6 lower bits if (f <= 1){break;} // end of the utf byte sequence if (str.charAt(i + 1) == "%"){ i++ ;} // test for the next shift byte else {break;} // abnormal, format error } s0 += String.fromCharCode(u); // add the escaped character } } } return s0; }
jsp 파일 수정후, 해당 페이지가 열리지 않을 경우.
> 원인을 찾을수가 없을경우..
--> ftp 파일 전송상의 문제일수 있다.
1. 어떠한 페이지에서 오류가 발생했다는 요청
2. 해당 페이지에 alert 창 추가후 저장
3. 해당 페이지 열리지 않음
4. 기존 페이지 원복
5. 해당 페이지 열리지 않음
6. 다른 페이지 확인차 페이지 수정
7. 모든 페이지 열리지 않음
8. 원복-수정 반복
9. 원인 미상...
10. 마지노선으로 테스트서버의 파일을 운영서버로 직접 이동
> TEST (111.111.111.111) -> 운영 ( 222.222.222.222) 으로 taskMain.jsp 파일 직접이동.
11. 모든 페이지 열림.....
12. 뭐야..이건....... > WAS 문제(??)인듯
[개발자A]보기에는 전혀 문제가 없으나 ftp 로 파일 업로드시에
해당 파일이 깨져서 올라갈 경우가 있었다(ALFTP로 보니..파일명 뒤에 이상한 문자가 붙는등...)
기흥에 있을때도 이런 문제가 있어서 ftp 업로드시 ALFTP를 사용하기로 했다.
[개발자B] 에디트 플러스에서 직접 수정시 문자형식오류로 인해 잘못된 코드가 입력된경우가 있었다.
[결론] 이렇게 해결했다. ( 물론 여러가지 해결방법중 하나의 방법이었을 뿐이겠지만...)
>> 원인을 찾을수 없는 페이지 에러 발생시 테스트서버에서 운영서버로 직접 파일을 이동시켜보셈