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;
}
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;
}
相关文章推荐
- Python读取非UTF-8编码文件出错的解决办法
- JAVA从UTF-8编码文件读取字符串时,前边有问号的问题
- 如何将Java源代码文件的编码从GBK转为UTF-8?
- 转载:读取一个文本文件并把文件中的文本保存在一个CString对象中,如何能做到
- Windows中notepad以UTF-8编码保存文件时实际上用的是UTF-8+BOM编码方式
- J2ME中读取Unicode和UTF-8编码文件
- 【框架-MFC】MFC/C++用Char*(Byte*)读取文件utf-8的文件乱码----解码
- notepad++新建文件时如何设置默认编码为utf_8(无包含BOM)
- Java读取UTF-8编码的TXT文件,第一行多一个"?"
- 用ASP读取/写入UTF-8编码格式的文件
- iphone阅读器,如果要读取一个文本文件,请问你是如何处理编码问题的?另外像pdf格式的文件,你如何读取。?
- [Unity][JSON][csv][JSONUnity]csv-JSON如何在CSV文件中保存数组并读取JSON数组
- Unity3D如何读取保存XML,以及用U3D内置方式保存文件
- MFC如何用CFileDialog来打开和保存文件
- QT如何从配置文件读取参数并保存最近使用的参数
- source insight如何保存为utf-8的格式编码
- java读取ANSI编码或者UTF-8编码文件乱码问题解决
- 如何在 Linux 中将文件编码转换为 UTF-8
- JAVA从UTF-8编码文件读取字符串时,前边有问号的问题
- VBA EXCEL新建的TXT文件如何保存 编码为:Unicode