Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

닌자고양이

[C/C++] 콘솔에 확장 아스키 문자 출력 본문

C C++

[C/C++] 콘솔에 확장 아스키 문자 출력

닌자고양이 2019. 12. 4. 05:48

1. 한글 윈도우(CP949)인 경우 코드 페이지를 CP1252로 변경해 윈도우 확장 아스키 문자 출력

 

윈도우 표준 8비트 코드 페이지 CP1252(Windows-1252, ISO-8859-1, 라틴 알파벳 문자 집합) 사용

#include <stdio.h>
#include <windows.h>

int main()
{    
    SetConsoleOutputCP(1252); // 코드 페이지 CP1252 로 변경
    printf("%c", 216);        // 윈도우 확장 아스키 문자 Ø 출력
}

 

* 코드 페이지를 1252 대신 437 을 사용하면 도스 확장 아스키 문자 ╪ 를 출력한다.

 

 

2. 콘솔 출력 스트림을 유니코드 모드로 변경한 뒤 유니코드 문자 함수를 사용

유니코드는 16비트 코드 페이지로 8비트 코드 페이지 1252를 하위 호환함

#include <stdio.h>
#include <io.h>
#include <fcntl.h>

int main()
{
    _setmode(_fileno(stdout), _O_U16TEXT);  // 출력 스트림을 유니코드 모드로 변경
    wprintf(L"%c", 216);                    // 유니코드 출력 함수로 확장 아스키 문자 Ø 출력
}

 

3. 코드 페이지를 콘솔창의 코드페이지(949)와 맞추고 printf 또는 wprintf 로 wide character 출력

#include <stdio.h>
#include <locale.h>

int main()
{
    setlocale(LC_ALL, ".949");
    wprintf(L"%c", 216);
    printf("%lc", 216);
}

 

 

 

Windows-1252 문자 집합 (0~31 제어 문자는 출력되지 않음)

 

CP 437 도스 문자 집합 (귀여운 모양의 제어 문자가 있다)

 

Comments