|
String URL_encode(String str)
{
if(str.IsEmpty()==true){
return "";
}
//---------------------------------------------------------------------------
char src[4096]={0,};
UnicodeToUtf8(src,str.c_str(),4096);
//---------------------------------------------------------------------------
String ret_str="";
int cnt=strlen(src);
for(int i=0;i<cnt;i++){
unsigned char c=(unsigned char)src[i];
if((c >= '0') && (c <= '9')){
ret_str+=String().sprintf(L"%c", c);
}else if((c >= 'A') && (c <= 'Z')){
ret_str+=String().sprintf(L"%c", c);
}else if((c >= 'a') && (c <= 'z')){
ret_str+=String().sprintf(L"%c", c);
}else if((c == '@') || (c == '.') || (c == '/') || (c == '\\') || (c == '-') || (c == '_') || (c == ':') ){
ret_str+=String().sprintf(L"%c", c);
}else{
ret_str+="%"+String().sprintf(L"%02x", c);
}
}
return ret_str;
}
초보 님이 쓰신 글 :
:
: 문자열 원본 (Address) : 인천 강화군 강화읍 용정리 508-4
:
: 원하는 결과값 : %EC%9D%B8%EC%B2%9C%20%EA%B0%95%ED%99%94%EA%B5%B0%20%EA%B0%95%ED%99%94%EC%9D%8D%20%EC%9A%A9%EC%A0%95%EB%A6%AC%20508-4
:
:
: 아래의 2가지 방법으로 처리해 봤으나, 원하는 결과값이 안나오네요..
:
:
: 방법 01.
: HTTPEncode( UTF8Encode(Address) ) ;
:
: 결과값 : %C0%CE%C3%B5+%B0%AD%C8%AD%B1%BA+%B0%AD%C8%AD%C0%BE+%BF%EB%C1%A4%B8%AE+508-4
:
: 방법 02.
: UnicodeString uri = TIdURI::URLEncode( Address, TEncoding::UTF8);
:
: 결과값 : %c0%ce%c3%b5%20%b0%ad%c8%ad%b1%ba%20%b0%ad%c8%ad%c0%be%20%bf%eb%c1%a4%b8%ae%20508-40
|