인코딩
-
한글인코딩 2010. 7. 17. 21:47
유니코드를 표현하는 5가지의 encoding(ucs2, ucs4, utf-7, utf-8, utf-16) ucs2 2바이트 고정형 인코딩 Big Endian Little Endian ucs4(MIME: UTF-32) 4바이트 고정형 인코딩 utf-7 unicode 의 mail safe version RFC1642 unicode 를 7bit 로 표현 utf-8 utf-16 BMP (Basic Multilingual Plane) 에 들어있는 글자는 2 바이트로 표현하게 되고 그 외의 글자들은 4 바이트를 이용해서 표현 오로지 한글만을 표현 EucKR(MIME: EUC-KR) ksx1001 ks_c_5601-1987 8비트 방식이 일반화된 현재의 메일이나 HTML Unified Hangul Code(MIME:..
-
base64인코딩 2009. 12. 17. 14:41
static const std::string base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz" "0123456789+/"; std::string base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len) { std::string ret; int i = 0; int j = 0; unsigned char char_array_3[3]; unsigned char char_array_4[4]; while (in_len--) { char_array_3[i++] = *(bytes_to_encode++); if (i == 3) { char_array_4[0] = (ch..
-
한글 -> 유니코드인코딩 2009. 2. 25. 15:35
WCHAR wFileName[MAX_PATH] ; MultiByteToWideChar(CP_ACP, 0, szFileName, -1, wFileName, MAX_PATH) ; /* or // sTime이란 ANSI 문자열을 bstr이란 이름의 유니코드(BSTR 타입) 변수로 변환 char sTime[] = "유니코드 변환 예제"; BSTR bstr; // sTime을 유니코드로 변환하기에 앞서 먼저 그 길이를 알아야 한다. int nLen = MultiByteToWideChar(CP_ACP, 0, sTime, lstrlen(sTime), NULL, NULL); // 얻어낸 길이만큼 메모리를 할당한다. bstr = SysAllocStringLen(NULL, nLen); // 이제 변환을 수행한다. Mult..
-
URL 인코딩인코딩 2009. 2. 22. 16:32
void URLencode( char * output , char * input) { // RFC 1738 참조 // 16진수로 봐서 00-1F 랑 7F 값은 %를 붙이고 헥사로 바꾼다 . // 80-FF 그리고 아래와 같은 controlling character들 // { } | \ ^ ~ [ ] ` # ; / ? : @ = & // 예를 들어서 스페이스 ( 빈칸 )은 // Dec 값으로 32구 Hex값으로 20이니까 // 빈칸대신 %20 를 붙이는 식입니다 int opt_inx, ipt_inx; for ( ipt_inx = 0 , opt_inx =0 ; input[ipt_inx]; ipt_inx++,opt_inx++) { int char_val = input[ipt_inx]; if ( char_val..
-
한글(MBCS) <-> UTF-8인코딩 2009. 2. 22. 16:12
CString EncodeToUTF8(LPCTSTR szSource) { WORD ch; BYTE bt1, bt2, bt3, bt4, bt5, bt6; int n, nMax = _tcslen(szSource); CString sFinal, sTemp; for (n = 0; n < nMax; ++n) { ch = (WORD)szSource[n]; if (ch == _T('=')) { sTemp.Format(_T("=%02X"), ch); sFinal += sTemp; } else if (ch < 128) { sFinal += szSource[n]; } else if (ch = 248 && z = nMax - 14) break; // something is wrong y = MakeByte(szSource[..