D:\test3>type sample.c//Compiler : Mingw-w64#include <stdio.h>#include <locale.h>int main(void){
_wsetlocale(LC_ALL,L"korean");if(-1==fputws(L"a한글a",stdout))perror("fputws() error");return0;}
D:\test3>sample
afputws() error: No space left on device
D:\test3>sample | more
a한글a
D:\test3>sample > sample.txt
D:\test3>type sample.txt
a한글a
D:\test3>
콘솔로 직접 출력할때는 뜬금없는 ENOSPC 오류가 생기지만 파이프 연결하거나 파일로 리다이렉트하면 오류없이 한글코드도 잘 출력되는군요. mingw-w64로 빌드하면 콘솔로의 표준출력이 약간 이상하게 열리는게 아닌가 싶네요. ( main()대신 wmain() 쓰고, #include <wchar.h> 하고, 빌드할때 -municode 옵션 주고, -DUNICODE -D_UNICODE 등 이짓저짓 해도 결과는 한결같았습니다 )
아래의 한 줄을 넣어 표준출력을 다시 열면 콘솔로의 한글코드 출력도 잘 되는데, 이게 제대로 된 방법인지는 모르겠습니다. 파이프나 리다이렉션으로 출력을 이용한다면 굳이 이런 편법 안 쓰고 원래 코드로 그냥 쓰셔도 될 것 같습니다.
D:\test3>type sample.c
콘솔로 직접 출력할때는 뜬금없는 ENOSPC 오류가 생기지만 파이프 연결하거나 파일로 리다이렉트하면 오류없이 한글코드도 잘 출력되는군요. mingw-w64로 빌드하면 콘솔로의 표준출력이 약간 이상하게 열리는게 아닌가 싶네요. ( main()대신 wmain() 쓰고, #include <wchar.h> 하고, 빌드할때 -municode 옵션 주고, -DUNICODE -D_UNICODE 등 이짓저짓 해도 결과는 한결같았습니다 )
아래의 한 줄을 넣어 표준출력을 다시 열면 콘솔로의 한글코드 출력도 잘 되는데, 이게 제대로 된 방법인지는 모르겠습니다. 파이프나 리다이렉션으로 출력을 이용한다면 굳이 이런 편법 안 쓰고 원래 코드로 그냥 쓰셔도 될 것 같습니다.
댓글 달기