정리필요2

character sets

ShineWithMe 2008. 7. 10. 22:53
character sets (문자셋)

1. Character Sets(문자셋)
 *문자셋의 정의 :  문자들의 집합, 약속된 문자의 표현방법


 [포괄적의미]
 *아스키코드(ASCII CODE)
  - 미국에서 정의하는 표준
  - 알파벳의 갯수 26에다 몇몇 확장 문자를 추가혀여 표현
  - 총 256개를 넘지 않음.
  - 1BYTE 문자열 256가지의 문자열


 *유니코드(UNICODE)
  - 컴퓨터에서 세계 각국의 언어를 통일된 방법으로 표현할수 있게 제안된 국제적인 문자코드 규약
  - 2BYTE로 나타내는 문자열. 종류가 256*256 = 65536개에 다함


 [명시적의미]
 *SBCS(Single Byte Character Set)
  - 문자열을 표현하는데 1byte만을 사용
  - 아스키코드는 일반적인 SBCS 방식


 *MBSC(Multi Byte Character Set)
  - 어떤문자는 1byte, 어떤 문자는 2byte로 표현
  - MBSC는 SBSC를 포함
  - 대부분의 문자는 2byte로 처리하나 아스키 코드에서 정의하고 있는
    문자를 표현할때는 1byte로 표현
 
 *WBSC(Wide Byte Character Set)
  - 유니코드가 일반적인  WBSC 방식
  - 모든 문자를 2BYTE로 처리


2. SBCS, WBCS 문자열 조작 함수

  // typedef unsigned int size_t;

  char    <--> wchar_t
  strlen  <--> sizeo_t  wcslen( const wchar_t* string);
  strcpy  <--> wchar_t* wscpy( wchar_t* dest, const wchar_t* src);
  strncpy <--> wchar_t* wcsncpy( wchar_t* dest, const wchar_t* str, size_t cnt);
  strcat  <--> wchar_t* wcscat( wchar_t* dest, const wchar_t* str);
  strncat <--> wchar_t* wcsncat( wchar_t* dest, const wchar_t* str, size_t cnt);
  strcmp  <--> int wcscmp(const wchar_t* s1, const wchar_t* s2);
  strncmp <--> int wcscncmp(const wchar_t* s1, const wchar_t* s2, size_t cnt);


3. SBCS, WBCS 문자열 입.출력 함수
  printf <--> int wprintf(const wchar_t* format[, argument]...);
  scanf  <--> int wsacnaf(const wchar_t* format[, argument]...);
  fgets  <--> wchar_t* fgetws(wchar_t* string, int n, FILE* stream);
  fputs  <--> int fputws(const wchar_t* string, FILE* stream);


4. 윈도우에서 정의 하는 자료형
  typedef char CHAR;
  typedef wchar WCHAR;


  #define CONST const


  typdef CHAR* <--> LPSTR;
  typdef CONST CHAR* <--> LPCSTR;

  typdef WHCAR*  <--> LPWSTR;
  typdef CONST WCHAR*  <--> LPCWSTR;


5. MBCS와 WBCS(유니코드)를 동시에 지원하기 위한 매크로

  typdef CHAR* <--> LPSTR;
  typdef CONST CHAR* <--> LPCSTR;

  typdef WHCAR*  <--> LPWSTR;
  typdef CONST WCHAR*  <--> LPCWSTR;

 

  #ifdef UNICODE // _UNICODE

    typedef WCHAR <--> TCHAR;

    typedef LPWSTR <--> LPTSTR;

    typedef LPCWSTR <--> LPCTSTR;   

  #else

    typedef CHAR <--> TCHAR;

    typedef LPSTR <--> LPTSTR;

    typedef LPCSTR <--> LPCTSTR;   

  #endif;