在Mingw64上交叉编译Windows程序时,经常使用某些c库函数进行匹配,但与Linux平台相比,Windows平台在c库函数支持方面存在差异
创建文件系统、获取文件、目录详细信息时使用的stat函数,该函数在再Linux环境中使用不太有问题,但在再Window环境中,对char*字符串中的中文路径支持度不够解决这个问题!
char u8str[]=u8'D://你好'; WCHAR uni_buf[MAX_PATH]={ 0 }; intlen=多字节tetowidechar (CP _ ACP,0,u8str,-1,NULL,0 ); multibytetowidechar (CP _ utf8,0,u8str,-1,uni_buf,len ); result=_wstat64(uni_buf,buf ); setlocale(LC_all,''); printf (打印内容启动: % ls )、uni_buf ); cmd客户机打印utf-8的字符串格式:
输入chcp 65001后输出的是utf-8
输入chcp 936是默认的GBK
从宽字节到多字节从wchar_t*到char
用vs tudio编译
whar uni _ buf [ max _ path ]=l ' h ://你好//你好'; char*passii=(char* ) malloc ) max_path ); intlen=widechartomultibyte (CP _ ACP,0,uni_buf,-1,NULL,0,NULL,NULL ); widechartomultibyte(CP_ACP,0,uni_buf,-1,pAssii,len,NULL,NULL ); 微软64编译
whar uni _ buf [ max _ path ]=l ' h ://你好//你好'; char*passii=(char* ) malloc ) max_path ); intlen=widechartomultibyte (CP _ utf8,0,uni_buf,-1,NULL,0,NULL,NULL ); widechartomultibyte (CP _ utf8,0,uni_buf,-1,pAssii,len,NULL,NULL );