Qt 通过fopen打开中文的文件名
-----------------------------------------------------------------
参考:
windows _wfopen 和 linux wfopen,char 转 wchar_t
https://blog.csdn.net/qq_40015157/article/details/126667850
Linux上wfopen(打开宽字符版的文件名和模式)的实现
https://blog.csdn.net/zfk198687/article/details/7763400
linux c fopen utf8,fopen的文件名参数是否能够支持utf8编码?该如何解决
https://blog.csdn.net/weixin_39604897/article/details/116987753
fopen的文件名参数是否能够支持utf8编码?
现在有个utf8编码的字符串的文件路径,有没有办法通过编码转换以及locale的设置使得最后以const char*的形式传给fopen函数并正确打开?
因为字符串里可能有当前代码页不支持的字符,所以不能直接转
改_wfopen的话代码改动范围太大,有没有什么好一点的方法
=====================================
Qt 通过fopen打开中文的文件名
在做一个Qt项目的时候,完成上传文件时,通过fopen打开文件用来读时发现fopen不能打开中文的文件名,自己在网查找一下,解决方法如下
代码如下:
bool
UTF8ToUnicode(const char * UTF8, wchar_t * strUnicode)
{
DWORD dwUnicodeLen;
//转换后Unicode的长度
TCHAR *pwText;
//保存Unicode的指针
// wchar_t* strUnicode; //返回值
//获得转换后的长度,并分配内存
dwUnicodeLen = MultiByteToWideChar(CP_UTF8,0,UTF8,-1,NULL,0);
pwText =new TCHAR [dwUnicodeLen];
if(!pwText)
{
return false ;
}
//转为Unicode
MultiByteToWideChar(CP_UTF8,0, UTF8,-1, pwText,dwUnicodeLen);
//转为CString
wcscpy(strUnicode, pwText);
//清除内存
delete []pwText;
return true ;
}
这个函数的用法如下:
wchar_t strUnicode[260];
UTF8ToUnicode(streamName, strUnicode);
FILE* fid = _wfopen(strUnicode, L"rb");
// FILE* fid = fopen(streamName, "rb");//此为原来的方法,遇到中文不能正确打开
————————————————
版权声明:本文为CSDN博主「guoqianqian5812」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/guoqianqian5812/article/details/45226695