분명 정상적인 텍스트 파일을 불러왔는데 문자가 계속 깨져요 ㅠ
Data 변수는 TCHAR입니다
뭐가 잘못됬는지 모르겠어요
tchar이면 프로젝트가 multibyte인지 unicode인지에 따라 타입이 유동적인데 L"\0" 쓴거 보면 unicode인듯? 그렇다면 readsize는 바이트 단위라 unicode환경에서는 2로 나눠줘야 함.
readsize를 2로 나눠줘야하는건가요? 아님 Data 배열 내부 값을 2로 나누어줘야한다는건가요?
글고 변수가 더 있음. 저 파일이 unicode로 저장되어있는지, BOM유무는 어떤지 등등.. 지금 본문만 봐서는 정확한 진단이 안되네.
파일은 utf 8으로 인코딩되어있고 BOM은 뭔지 모르겠어요... 파일 인코딩은 그냥 UTF8이에요
Data[readsize/2] = '\0'; 해보셈
똑같은데요...
UTF-8임? 그럼 저렇게 읽으면 안될텐데... 비-영문 문자 필히 써야하는 환경임? 그럼 char로 읽어서 MultibyteToWideChar쓰거나 iconv같은 외부라이브러리 써야함.
텍스트 내용에 문자가 대응되는걸로 봐서는 문자 자체는 제대로 읽어오는 듯 한데, 비주얼스튜디오가 그걸 제대로 인식을 못하는거같아요
그냥 char써서 읽어야겠네요 답변 감사합니다
일단 프로젝트 세팅가서 multibyte인지 unicode인지 정보가 필요하고. 만일 multibyte면 readsize/2말고 그냥 readsize쓰는게 맞고. save.txt엔 무슨내용이 들어가있는지도 알려줘보셈.
//---------------------------------------------------------////---------------------------------------------------------//LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam){ HDC hdc; PAINTSTRUCT ps; switch (iMessage) { case WM_PAINT: hdc = BeginPaint(hWnd, &ps);// (100, 100) 위치에 10자의 텍스트를 출력한다 TextOut(hdc, 200, 50, s
이게 텍스트 파일 내용이고
세팅은 유니코드로 해놨어요
움.. 한글이 들어가있고 utf-8이라 그냥 char만 쓰면 영어랑 특수문자까지는 제대로 읽히지만 한글쪽은 또 깨질거같네요. char 배열로 읽어서 MultiByteToWideChar 하는 수밖에 없을거 같아 보이는군요.
tchar이면 프로젝트가 multibyte인지 unicode인지에 따라 타입이 유동적인데 L"\0" 쓴거 보면 unicode인듯? 그렇다면 readsize는 바이트 단위라 unicode환경에서는 2로 나눠줘야 함.
readsize를 2로 나눠줘야하는건가요? 아님 Data 배열 내부 값을 2로 나누어줘야한다는건가요?
글고 변수가 더 있음. 저 파일이 unicode로 저장되어있는지, BOM유무는 어떤지 등등.. 지금 본문만 봐서는 정확한 진단이 안되네.
파일은 utf 8으로 인코딩되어있고 BOM은 뭔지 모르겠어요... 파일 인코딩은 그냥 UTF8이에요
Data[readsize/2] = '\0'; 해보셈
똑같은데요...
UTF-8임? 그럼 저렇게 읽으면 안될텐데... 비-영문 문자 필히 써야하는 환경임? 그럼 char로 읽어서 MultibyteToWideChar쓰거나 iconv같은 외부라이브러리 써야함.
텍스트 내용에 문자가 대응되는걸로 봐서는 문자 자체는 제대로 읽어오는 듯 한데, 비주얼스튜디오가 그걸 제대로 인식을 못하는거같아요
그냥 char써서 읽어야겠네요 답변 감사합니다
일단 프로젝트 세팅가서 multibyte인지 unicode인지 정보가 필요하고. 만일 multibyte면 readsize/2말고 그냥 readsize쓰는게 맞고. save.txt엔 무슨내용이 들어가있는지도 알려줘보셈.
//---------------------------------------------------------////---------------------------------------------------------//LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam){ HDC hdc; PAINTSTRUCT ps; switch (iMessage) { case WM_PAINT: hdc = BeginPaint(hWnd, &ps);// (100, 100) 위치에 10자의 텍스트를 출력한다 TextOut(hdc, 200, 50, s
이게 텍스트 파일 내용이고
세팅은 유니코드로 해놨어요
움.. 한글이 들어가있고 utf-8이라 그냥 char만 쓰면 영어랑 특수문자까지는 제대로 읽히지만 한글쪽은 또 깨질거같네요. char 배열로 읽어서 MultiByteToWideChar 하는 수밖에 없을거 같아 보이는군요.