리눅스에서 wchar를 이용하여 printf 혹은 파일에 찍기
글쓴이: bizzare / 작성시간: 일, 2012/11/11 - 5:53오후
아래와 같이 코드했을 때,
wprintf, fwprintf 가 적힌 코드에서 L"테스트코드2"와 같은 식으로 적으면
converting to execution character set: Invalid or incomplete multibyte or wide character
라는 에러가 납니다.
현재 한글, 일본어, 중국어 등을 모두 출력하거나 파일에 쓰거나 읽어야 하는데, 진도가 안나가네요.
도움 요청드립니다.
#include <stdio.h> #include <wchar.h> void Func2() { printf("테스트코드1\n"); wprintf(L"테스트코드2\n");//converting to execution character set: Invalid or incomplete multibyte or wide character FILE* m_pFileStream = fopen("./파일.txt", "wt+,ccs=UTF-8"); if(m_pFileStream) { printf("File was opened successfully\n"); fwprintf(m_pFileStream, L"test1\n"); fwprintf(m_pFileStream, L"test2\n"); //fwprintf(m_pFileStream, L"테스트\n");//converting to execution character set: Invalid or incomplete multibyte or wide character wchar_t test[1000] = L"테스트"; fwprintf(m_pFileStream, test); } fclose(m_pFileStream); } int main(void) { //Func1(); Func2(); return 0; }
Forums:
gcc manual에서 -finput-charset을
gcc manual에서 -finput-charset을 찾아보세요.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
로케일 설정해주셔야 합니다.
#include
#include
#include
void Func2()
{
setlocale(LC_ALL, "");
printf("테스트코드1\n");
wprintf(L"테스트코드2\n");//converting to execution character set: Invalid or incomplete multibyte or wide character
FILE* m_pFileStream = fopen("./파일.txt", "wt+,ccs=UTF-8");
if(m_pFileStream)
{
printf("File was opened successfully\n");
fwprintf(m_pFileStream, L"test1\n");
fwprintf(m_pFileStream, L"test2\n");
//fwprintf(m_pFileStream, L"테스트\n");//converting to execution character set: Invalid or incomplete multibyte or wide character
wchar_t test[1000] = L"테스트";
fwprintf(m_pFileStream, test);
}
fclose(m_pFileStream);
}
int main(void)
{
//Func1();
Func2();
return 0;
}
댓글 달기