※요약

유니코드 타입의 한글 문자열을 출력하려고 하면 깨지거나 ??? 등, 제대로 나오지 않는 문제점들이 있다.



원인

네이버 지식인 참고



※해결방법

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;
}



※결과

한글이 깨진다.


설정 후에는 제대로 나온다.


+ Recent posts