阅读 100

utf8转换ansi,手机txt格式转换器

匿名用户

一级

2018-08-21答复

请参照以下方法将CFile类更改为FILE*。 将字符串更改为写入文件流。

请注意,汉字在utf8中占了3个字节。

//unicode to ansi

voidcconvertdlg : onbnclickedbuttonunicodetoansi (

{

//unicode to ansi

wchar_t* wszString=L'abcd1234你和我';

//进行预变换,得到所需的空间大小,这次使用与上面的名字相反的函数

intan silen=:3360 widechartomultibyte (CP _ ACP,NULL,wszString,wszString ),NULL,0,NULL,NULL );

//同上,为了分配空间,在“0”中确保空间

char* szAnsi=new char[ansiLen 1];

//转换

//unicode版对应的strlen是wcslen

:3360 widechartomultibyte (CP _ ACP,NULL,wszString,wcslen(wszstring ),szAnsi,ansiLen,NULL );

//在最后加上“0”

szAnsi[ansiLen]='\0”;

//Ansi版的消息盒API

:消息boxa (getsafehwnd )、szAnsi、szAnsi、MB_OK );

//接下来写课文

//写文本文件,ANSI文件中没有BOM

CFile cFile;

cfile.open(_t ),cfile :3360 modewrite|cfile 3360: mode create;

//文件开头

cFile.SeekToBegin (;

//写入内容

cfile.write(SZansi,ansilen*sizeof ) char );

cFile.Flush (;

cFile.Close (;

delete[] szAnsi;

szAnsi=NULL;

//方法2

//和上面一样有别的方法

setlocale(LC_ctype,' chs ' );

char szStr[100];

//注意下面是大写字母,在ansi中,后面是unicode字符串

//sprintf

sprintf(szstr,' %S ',wszString );

: messageboxa (getsafehwnd (,szStr,szStr,MB_OK );

}

//UTF8到UNICODE

voidcconvertdlg : onbnclickedbuttonu 8to unicode (

{

//UTF8 to Unicode

//中文直接复制会乱码,编译器可能会报告错误,所以采用十六进制格式

char * szu8=' ABCD 1234\xe4\xbd\xa0\xe6\x88\x91\xe4\xbb\x96\x00 ';

//进行预变换,得到所需的空间大小

int wcslen=:3360 multibytetowidechar (CP _ utf8,NULL,szU8,strlen ) szU8 )、NULL,0 );

//要分配空间,请在“\0”中保留空间,MultiByteToWideChar不会给“\0”分配空间

whar _ t * wszstring=new wchar _ t [ wcslen1];

//转换

:3360 multibytetowidechar (CP _ utf8,NULL,szU8,strlen(szu8 ),wszString,wcsLen );

//在最后加上“0”

wszString[wcsLen]='\0”;

//unicode版的消息盒API

: messagebox w (getsafehwnd (,wszString,wszString,MB_OK );

//写文本和ansi to unicode一样

}


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐