汉字文件名问题解决的一个途径
UniCode 下 CString 转 char* 的方法的文章有很多,但是大部分都是在互相转载,看了那么多资料,仍然没有解决乱码的问题,后来从一个论坛的一条回复里面找到了正确的方法,特此拿出来与大家分享。
先总结一下网上找到的三种转换的方法:
方法一:使用函数setlocale
setlocale(LC_ALL,"chs");
需要包含头文件#include <locale.h>
此方法的思路是配置地域化信息。通常在需要输入输出中文的时候设置一下,就没问题了,setlocale详情
点我
方法二:使用函数:T2A、W2A
CString str = _T("D://校内项目//QQ.bmp");
//声明标识符
USES_CONVERSION;
//调用函数,T2A和W2A均支持ATL和MFC中的字符转换
char * pFileName = T2A(str);
//char * pFileName = W2A(str); //也可实现转换
注意:有时候可能还需要添加引用#include <afxpriv.h>
使用此方法要注意声明标识符,T2A、W2A详情
点我
方法三:使用API:WideCharToMultiByte进行转换
CString str = _T("D://校内项目//QQ.bmp");
//注意:以下n和len的值大小不同,n是按字符计算的,len是按字节计算的
int n = str.GetLength(); // n = 14, len = 18
//获取宽字节字符的大小,大小是按字节计算的
int len = WideCharToMultiByte(CP_ACP,0,str,str.GetLength(),NULL,0,NULL,NULL);
//为多字节字符数组申请空间,数组大小为按字节计算的宽字节字节大小
char * pFileName = new char[len+1]; //以字节为单位
//宽字节编码转换成多字节编码
WideCharToMultiByte(CP_ACP,0,str,str.GetLength(),pFileName,len,NULL,NULL);
WideCharToMultiByte(CP_ACP,0,str,str.GetLength() + 1 ,pFileName,len + 1 ,NULL,NULL);
pFileName[len+1] = '/0'; //多字节字符以'/0'结束
这三种方法都是感觉比较靠谱的,也有很多人验证了可以成功,但是在我用的时候很悲催,三种方法都不行,经过仔细的考虑,发现第三种方法应该是万无一失,最保险的方法啊,后来经过仔细查找,原来是参数出了问题,黄色被我划掉的是网上流传的比较广泛的方法,WideCharToMultiByte(CP_ACP,0,str,str.GetLength() + 1 ,pFileName,len + 1 ,NULL,NULL);是我验证成功的写法,至于为什么是这样,留给大家自己思考。WideCharToMultiByte详情点我
分享到:
相关推荐
一个非常好的解决VC乱码方法,让你不再烦乱码。
解决win7 64位 vc6.0中文显示乱码问题
VC13JPEG2000编码优化毕业设计全套VC13JPEG2000编码优化毕业设计全套VC13JPEG2000编码优化毕业设计全套VC13JPEG2000编码优化毕业设计全套VC13JPEG2000编码优化毕业设计全套VC13JPEG2000编码优化毕业设计全套VC13JPEG...
一段测试视频,音频编码格式为aac,视频编码格式为vc2,封装格式为mp4,该视频可以作为测试素材使用。
通过调用封装API函数WideCharToMultiByte和MultiByteToWideChar,实现ANSI/UTF-8/Unicode编码格式的相互转换。有C++和C两个版本。
本源码是在vc6.0平台上编写的huffman编码的实现,该算法实现了从文件中读取字符串,并对其进行编解码,用链表结构实现,程序代码清晰,容易理解
直线的编码裁剪算法 VC6.0编译 MFC Dlg
这是一个免费的vc1编码器,非常适合做编解码的同学来做研究。
一个vc做的批量编码转换工具,虽然不是很好用,但是有时候也能解决一些问题.
选择VC工程目录,转换文件格式到UTF-8格式。
广电标准VC2压缩编码的链接库源码,能够在VC2010上编译通过
该软件能 实现行数的显示 更方便编码查找错误 VC显示行号插件说明 --------------------------------------- 1. 如果你的VC安装在C盘,请拷贝文件VC6LineNumberAddin.dll到如下目录: C:\Program Files\...
VC9微软编码标准草案 WMV9,VC1 是微软的视频编码技术
vc编码规范 项目风格 文件风格 函数风格 变量风格
只要输入字符个数、字符、权数就可对其进行编码!还可以文本的形式输出
详细描述见博客:http://blog.csdn.net/qq_23992597/article/details/53385756
vc二维码生成的实例, QRcode生成.从QR编码实例,下载至PUDN.com.与大家共享.对大家编程技术有很大的提高, 也可以直接放在项目中使用.
小波变换vc编码一到三层都有,有助于对小波变换思想的深入理解
VC2008,QR码,编码。非常适合QR初级学习。