windows编码转换
来源:互联网 发布:获取mac的最高权限 编辑:程序博客网 时间:2024/06/14 06:41
char* unicodeToUtf8(const TCHAR *zWideFilename){ int nByte;char *zFilename;nByte = WideCharToMultiByte(CP_UTF8, 0, zWideFilename, -1, 0, 0, 0, 0);zFilename = (char *)malloc(nByte);if(zFilename == 0){return 0;}nByte = WideCharToMultiByte(CP_UTF8, 0, zWideFilename, -1, zFilename, nByte, 0, 0);if( nByte == 0 ){free(zFilename);zFilename = 0;}return zFilename; }char* unicodeToMbcs(const TCHAR *zWideFilename) {int nGb2312Len = WideCharToMultiByte(CP_ACP, 0, zWideFilename, -1, NULL, 0, NULL, NULL);char *pcGb2312=(char *)malloc(nGb2312Len + 1);//new char[nGb2312Len + 1]; memset(pcGb2312, 0, nGb2312Len + 1);WideCharToMultiByte(CP_ACP, 0, zWideFilename, -1, pcGb2312, nGb2312Len, NULL, NULL);return pcGb2312;}TCHAR* mbcsToUnicode(const char *zFilename) { int nByte; TCHAR *zMbcsFilename; int codepage = AreFileApisANSI() ? CP_ACP : CP_OEMCP; nByte = MultiByteToWideChar(codepage, 0, zFilename, -1, NULL,0)*sizeof(WCHAR); zMbcsFilename = (TCHAR *)malloc(nByte*sizeof(zMbcsFilename[0])); if( zMbcsFilename==0 ) { return 0; } nByte = MultiByteToWideChar(codepage, 0, zFilename, -1, zMbcsFilename, nByte); if(nByte == 0) { free(zMbcsFilename); zMbcsFilename = 0; } return zMbcsFilename; } char* mbcsToUtf8( const char* zFilename ){TCHAR* pwFilename = mbcsToUnicode(zFilename);if(pwFilename == NULL)return NULL;char* pUtf8 = unicodeToUtf8(pwFilename);free(pwFilename);return pUtf8;}char* utf8ToMbcs( const char* zFilename ){int nUnicodeLen = MultiByteToWideChar(CP_UTF8, 0, zFilename, -1, NULL, 0);TCHAR * pcUnicode = new TCHAR[nUnicodeLen+1]; memset(pcUnicode, 0, nUnicodeLen * 2 + 2);//utf8 to unicodeMultiByteToWideChar(CP_UTF8, 0, zFilename, -1, pcUnicode, nUnicodeLen);//unicode to gb2312int nGb2312Len = WideCharToMultiByte(CP_ACP, 0, pcUnicode, -1, NULL, 0, NULL, NULL);char *pcGb2312=(char *)malloc(nGb2312Len + 1);//new char[nGb2312Len + 1]; memset(pcGb2312, 0, nGb2312Len + 1);WideCharToMultiByte(CP_ACP, 0, pcUnicode, -1, pcGb2312, nGb2312Len, NULL, NULL);delete[] pcUnicode;return pcGb2312;}TCHAR* utf8ToUnicode(const char *zFilename) {int nUnicodeLen = MultiByteToWideChar(CP_UTF8, 0, zFilename, -1, NULL, 0);TCHAR * pcUnicode = new TCHAR[nUnicodeLen+1]; memset(pcUnicode, 0, nUnicodeLen * 2 + 2);//utf8 to unicodeMultiByteToWideChar(CP_UTF8, 0, zFilename, -1, pcUnicode, nUnicodeLen);return pcUnicode;}//Converting a WChar string to a Ansi stringstd::string WChar2Ansi(LPCWSTR pwszSrc){int nLen = WideCharToMultiByte(CP_ACP, 0, pwszSrc, -1, NULL, 0, NULL, NULL);if (nLen<= 0) return std::string("");char* pszDst = new char[nLen];if (NULL == pszDst) return std::string("");WideCharToMultiByte(CP_ACP, 0, pwszSrc, -1, pszDst, nLen, NULL, NULL);pszDst[nLen -1] = 0;std::string strTemp(pszDst);delete [] pszDst;return strTemp;}std::string ws2s(const std::wstring& ws) {return WChar2Ansi(ws.c_str()); }//Converting a Ansi string to WChar stringstd::wstring Ansi2WChar(LPCSTR pszSrc, int nLen){int nSize = MultiByteToWideChar(CP_ACP, 0, (LPCSTR)pszSrc, nLen, 0, 0);if(nSize <= 0) return NULL;//printf("size = %d\n", nSize);TCHAR *pwszDst = new TCHAR[nSize+1];if( NULL == pwszDst) return NULL;MultiByteToWideChar(CP_ACP, 0,(LPCSTR)pszSrc, nLen, pwszDst, nSize);pwszDst[nSize] = 0;if( pwszDst[0] == 0xFEFF) // skip Oxfefffor(int i = 0; i < nSize; i ++)pwszDst[i] = pwszDst[i+1];std::wstring wcharString(pwszDst);delete pwszDst;return wcharString;}std::wstring s2ws(const std::string& s) { return Ansi2WChar(s.c_str(),s.size());}
0 0
- windows字符编码转换
- windows编码转换
- windows 编码转换问题
- Windows下字符编码转换
- python windows gbk编码转换
- MySQL 编码转换 UTF-8 方法 (WINDOWS)
- linux 与 Windows 下面编码转换
- Linux/Windows 下字符编码转换
- Windows与Linux编码转换问题
- C++ Windows平台字符串编码转换
- Windows Phone 7 中将Gb2312编码转换成UTF-8
- Windows Phone 7 中将Gb2312编码转换成UTF-8
- 使用windows命令和iconv.exe批量转换文件编码
- 使用 windows命令和iconv.exe批量转换文件编码
- Windows下字符编码转换(ANSI <--> Unicode <--> UTF-8)
- Windows下C++实现编码转换(SDK、MFC)
- Windows转到linux中,文件乱码,文件编码转换
- 一套Windows上C/C++的编码转换函数
- OpenGL3.0教程 第八课:基础光照模型
- 理解SVM的三层境界
- iOS 定时器
- 我的汇编学习之行(2)-8086寄存器简介
- MySQL Cluster(MySQL 集群) 初试
- windows编码转换
- 从决策树学习谈到贝叶斯分类算法、EM、HMM
- OpenGL3.0教程 第九课:VBO索引
- Java类加载过程中静态变量和变量的区别
- Unity自动更新、AssetBundle整理
- 一位iOS开发者使用React Native的体验
- bsfl汇编指令 http://blog.csdn.net/chief1985/article/details/2441182
- byte[]数组和int之间的转换
- OpenGL3.0教程 第十课:透明