urlencode 질문드립니다.
글쓴이: redpig / 작성시간: 수, 2012/07/11 - 8:26오후
static char _x2c(char hex_up, char hex_low)
{
char digit;
digit = 16 * (hex_up >= 'A'
? ((hex_up & 0xdf) - 'A') + 10 : (hex_up - '0'));
digit += (hex_low >= 'A'
? ((hex_low & 0xdf) - 'A') + 10 : (hex_low - '0'));
return (digit);
}
char *qURLencode(char *str)
{
char *encstr, buf[2+1];
unsigned char c;
int i, j;
if(str == NULL) return NULL;
if((encstr = (char *)malloc((strlen(str) * 3) + 1)) == NULL)
return NULL;
for(i = j = 0; str[i]; i++)
{
c = (unsigned char)str[i];
if((c >= '0') && (c <= '9')) encstr[j++] = c;
else if((c >= 'A') && (c <= 'Z')) encstr[j++] = c;
else if((c >= 'a') && (c <= 'z')) encstr[j++] = c;
else if((c == '@') || (c == '.') || (c == '/') || (c == '\\')
|| (c == '-') || (c == '_') || (c == ':') )
encstr[j++] = c;
else
{
sprintf(buf, "%02x", c);
encstr[j++] = '%';
encstr[j++] = buf[0];
encstr[j++] = buf[1];
}
}
encstr[j] = '\0';
return encstr;
}구글링해서 찾아낸 urlencode 소스인데요..
이 소스로 "한글"을 인코딩해보면 "%C7%D1%B1%DB" 이렇게 나오는데요..
자바스크립트의 encodeURIComponent()로 똑같이 "한글"을 인코딩해보면 "%ED%95%9C%EA%B8%80" 이렇게 나오던데요..
왜 결과값이 다른걸까요?
구글링해서 찾아본 다른 소스들도 모두 위 소스와 같은 방식으로 인코딩을 하던데요..
자바스크립트 encodeURIComponent()와 같은 인코딩 결과값이 나오게 하고 싶은데 어떻게 해야하는지 도무지 모르겠네요..
Forums:


c++ 코드입니다.
http://www.zedwood.com/article/111/cpp-urlencode-function
그건 입력으로 들어간 "한글" 문자열의 인코딩이
그건 입력으로 들어간 "한글" 문자열의 인코딩이 뭐냐에 따라 달라진 거라서요,
"%C7%D1%B1%DB" 이렇게 나올 때는 euc-kr, 윈도우라면 cp949 로 인코딩되어 있는 거고
"%ED%95%9C%EA%B8%80" 이건 UTF-8 이네요.
좋은 하루 되세요!
아하.. 그렇군요.
질문자께서 올리신 코드도 정상 동작하는데, 괜히 다른 코드를 링크로 남겼네요.
말씀하신 것처럼 "한글" 이라는 문자열 자체가 cp949 또는 euc-kr 일때는 "%C7%D1%B1%DB"라고 나오지만
UTF-8 로 하면 질문자께서 원하시는 결과가 나오네요 ㅎㅎ
그럼 어떻게 해야하나요?
그래서 어떻게해야 원하는 결과가 나오는건가요?
무엇을 원하시나요?
무엇을 원하시나요?
댓글 달기