您的位置:首页 > 其它

mfc中如何读取,保存编码为utf-8的文件

2009-01-08 09:11 876 查看
主要用到两个Api:
MultiByteToWideChar
http://msdn.microsoft.com/en-us/library/ms776413.aspx
WideCharToMultiByte
http://msdn.microsoft.com/en-us/library/ms776420.aspx

ANSI <--> Unicode <--> UTF8

/*代码如下*/

Code Snippet

wchar_t * ANSIToUnicode( const char* str )

{

int textlen ;

wchar_t * result;

textlen = MultiByteToWideChar( CP_ACP, 0, str,-1, NULL,0 );

result = (wchar_t *)malloc((textlen+1)*sizeof(wchar_t));

memset(result,0,(textlen+1)*sizeof(wchar_t));

MultiByteToWideChar(CP_ACP, 0,str,-1,(LPWSTR)result,textlen );

return result;

}

char * UnicodeToANSI( const wchar_t *str )

{

char * result;

int textlen;

// wide char to multi char

textlen = WideCharToMultiByte( CP_ACP, 0, str, -1, NULL, 0, NULL, NULL );

result =(char *)malloc((textlen+1)*sizeof(char));

memset( result, 0, sizeof(char) * ( textlen + 1 ) );

WideCharToMultiByte( CP_ACP, 0, str, -1, result, textlen, NULL, NULL );

return result;

}

wchar_t * UTF8ToUnicode( const char* str )

{

int textlen ;

wchar_t * result;

textlen = MultiByteToWideChar( CP_UTF8, 0, str,-1, NULL,0 );

result = (wchar_t *)malloc((textlen+1)*sizeof(wchar_t));

memset(result,0,(textlen+1)*sizeof(wchar_t));

MultiByteToWideChar(CP_UTF8, 0,str,-1,(LPWSTR)result,textlen );

return result;

}

char * UnicodeToUTF8( const wchar_t *str )

{

char * result;

int textlen;

// wide char to multi char

textlen = WideCharToMultiByte( CP_UTF8, 0, str, -1, NULL, 0, NULL, NULL );

result =(char *)malloc((textlen+1)*sizeof(char));

memset(result, 0, sizeof(char) * ( textlen + 1 ) );

WideCharToMultiByte( CP_UTF8, 0, str, -1, result, textlen, NULL, NULL );

return result;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: