2005로 짜다보니 유니코드땜에 골치 아픈게 많았습니다
골치 아프다기 보다는 실력이 미흡해서 생기는 문제들이지만.. --;
한창 unsigned char로 저장된 데이터를 유니코드 CString으로 가져올때 한글만 깨지는 문제때문에 골머리를 섞이다가..
데브피아에서 어떤 분의 도움을 받아 간편한 string 변환 매크로를 알게 되었습니다.
해당 매크로는 USES_CONVERSION 라는 매크로입니다.
이 매크로는 ANSI와 UNICODE를 컨버젼 해줍니다.
사용방법은
#include <afxconv.h> 혹은, #include <atlconv.h>로 선언해주시고
USES_CONVERSION; //이 매크로는 변환과정이 있는 함수내에서만 동작하고 자동 제거되는것 같습니다.
CString strTemp;
strTemp = A2W((char*)ucData);
이런식으로 바꾸어 주시면 됩니다.
반대로 유니코드 CString -> unsigned char로 바꾸어 주실때는
W2A()를 사용해 주시면 됩니다.
MSDN 참고 : - http://msdn2.microsoft.com/en-us/library/87zae4a3.aspx -
다음은 도움을 얻은 곳입니다.
http://blog.empas.com/hoperok/23204795
http://jof4002.net/?Unicode
골치 아프다기 보다는 실력이 미흡해서 생기는 문제들이지만.. --;
한창 unsigned char로 저장된 데이터를 유니코드 CString으로 가져올때 한글만 깨지는 문제때문에 골머리를 섞이다가..
데브피아에서 어떤 분의 도움을 받아 간편한 string 변환 매크로를 알게 되었습니다.
해당 매크로는 USES_CONVERSION 라는 매크로입니다.
이 매크로는 ANSI와 UNICODE를 컨버젼 해줍니다.
매크로 | 인자 | 결과 |
A2CW | (LPCSTR) | (LPCWSTR) |
A2W | (LPCSTR) | (LPWSTR) |
W2CA | (LPCWSTR) | (LPCSTR) |
W2A | (LPCWSTR) | (LPSTR) |
T2COLE | (LPCTSTR) | (LPCOLESTR) |
T2OLE | (LPCTSTR) | (LPOLESTR) |
OLE2CT | (LPCOLESTR) | (LPCTSTR) |
OLE2T | (LPCOLESTR) | (LPCSTR) |
사용방법은
#include <afxconv.h> 혹은, #include <atlconv.h>로 선언해주시고
USES_CONVERSION; //이 매크로는 변환과정이 있는 함수내에서만 동작하고 자동 제거되는것 같습니다.
CString strTemp;
strTemp = A2W((char*)ucData);
이런식으로 바꾸어 주시면 됩니다.
반대로 유니코드 CString -> unsigned char로 바꾸어 주실때는
W2A()를 사용해 주시면 됩니다.
MSDN 참고 : - http://msdn2.microsoft.com/en-us/library/87zae4a3.aspx -
다음은 도움을 얻은 곳입니다.
http://blog.empas.com/hoperok/23204795
http://jof4002.net/?Unicode