※요약
유니코드 타입의 한글 문자열을 출력하려고 하면 깨지거나 ??? 등, 제대로 나오지 않는 문제점들이 있다.
※원인
※해결방법
locale.h //헤더를 추가
_wsetlocale( LC_ALL, L"korean" ); //지역화 설정을 전역적으로 적용
wcout.imbue( locale("korean") ); //출력시 부분적 적용
wcin.imbue( locale("korean") ); //입력시 부분적 적용
만일 한 프로그램에 여러 언어를 출력해야 한다면 그때그때 설정을 바꿔준다.
※예제
#include <stdio.h> #include <locale.h> int main( ) { _wsetlocale( LC_ALL, L"korean" ); FILE *pFile = NULL; pFile = _wfopen( L"d:\\Text.txt", L"w" ); if( pFile == NULL ) { //에러 처리 } else { for( int i=0 ; i<3 ; ++i ) { fwprintf( pFile, L"%d %f %s \n", i, 0.5+i, L"한글" ); fwprintf( pFile, L"%d, %f, %s \n", i, 0.5+i, L"확인" ); fwprintf( pFile, L"%d\t%f\t%s \n", i, 0.5+i, L"유니코드" ); } fclose( pFile ); } return 0; }
※결과
한글이 깨진다.
설정 후에는 제대로 나온다.
'C > 파일, 디렉토리 함수' 카테고리의 다른 글
[C언어] 디렉토리 (폴더) 삭제 함수 - rmdir (1) | 2013.12.09 |
---|---|
[C언어] 파일 삭제 함수 - remove (1) | 2013.12.09 |
[C언어] 디렉토리 및 파일 존재 유무, 속성 검사 함수 - access (3) | 2013.12.08 |
[C언어] 파일 에러 및 파일 끝 함수 - ferror, feof (0) | 2013.12.06 |
[C언어] 파일 포인터 위치 관련 함수 - fgetpos, fsetpos (0) | 2013.12.05 |
[C언어] 파일 포인터 초기화 함수 - rewind (0) | 2013.12.04 |
[C언어] 파일 포인터 위치 설정 함수 - fseek (0) | 2013.12.03 |