PHP & Others

[VB] MyOleDB (mysql) 에서 한글 문제 해결

페이지 정보

본문

VB에서 ADO 를 통해서 Mysql를 사용하다보면..

한글을 사용하는데 문제가 있음을 알수 있습니다..

아마 VC등에서도 같을거 같습니다.

원인을 살펴보니깐..

myoledb com객체에서 유니코드(wchar)로 받은 스트링을..

ascii(char)로 변환하는 과정에서 문제가 있더군요..

myoledb 소스의

CCommand::Prepare 에서 이를 찾을수 있습니다.

// Convert SQL text

부분을 찾으셔서 그 아랫부분의 내용을 다음과 같이 고쳐주시면 됩니다.


int cCharsLen = WideCharToMultiByte(CP_ACP, 0, m_pwszCommand, nLen, NULL, 0, NULL, NULL);
m_pszSQL = new char[cCharsLen + 1];
if (m_pszSQL == NULL)
return E_OUTOFMEMORY;
int cCharsCopied = WideCharToMultiByte(CP_ACP, 0, m_pwszCommand, nLen, m_pszSQL, cCharsLen, NULL, NULL);
if (cCharsCopied != cCharsLen)
{
delete [] m_pszSQL;
return E_FAIL;
}

m_pszSQL[cCharsLen] = 0;


여러 가지 테스트를 해보지 않아서 다른 곳에서도 이와 같은 문제가 있을지도 모르겠습니다.

고쳐서 컴파일한 MyProv.dll을 같이 올립니다. 
[이 게시물은 nuno님에 의해 2007-01-24 00:45:05 Etc.에서 이동 됨]

관련자료

등록된 댓글이 없습니다.
Today's proverb
행복해지고 싶다면, 잠시 동안만이라도 가슴에 손을 얹고 생각해 보라. 그러면 진정한 즐거움은, 발치에 돋아나는 잡초나 아침 햇살에 빛나는 꽃의 이술과 같이 우리 주변에 무수히 널려 있다는 것을 알 수 있을 것이다. 《하루 5분 생각이 인생을 결정한다 》 (이범준)