Unicode字符集下CString/tchar*与char *转换 (解决中文乱码等)
Unicode环境下宽字符------->窄字符的转换
定义:TCHAR m_szIp[MAX_IP_LEN]; 我们要将TCHANR类型数组(宽字符型)转换为char*pBuffer类型(窄字符型):
方法一:
- int nNum=WideCharToMultiByte(CP_ACP,0,m_szIp,-1,0,0,NULL,NULL);
- char* pBuffer=new char[nNum+1];
- WideCharToMultiByte(CP_ACP,0,m_szIp,-1,pBuffer,nNum,NULL,NULL);
int nNum=WideCharToMultiByte(CP_ACP,0,m_szIp,-1,0,0,NULL,NULL);char* pBuffer=new char[nNum+1];WideCharToMultiByte(CP_ACP,0,m_szIp,-1,pBuffer,nNum,NULL,NULL);
方法二:T2A 、W2A
- USES_CONVERSION;
- char *pBuffer = T2A(m_szIp);
USES_CONVERSION;char *pBuffer = T2A(m_szIp);
相反,同样情况下,窄字符--------->宽字符转换:
方法一:MultiByteToWideChar
方法二:A2T、A2W
下面是对方法一的两个函数的封装:
- char *WideCharToAnsi(wchar_t *pWideChar)
- {
- if (!pWideChar) return NULL;
- char *pszBuf = NULL;
- int needBytes = WideCharToMultiByte(CP_ACP, 0, pWideChar, -1, NULL, 0, NULL, NULL);
- if (needBytes > 0){
- pszBuf = new char[needBytes+1];
- ZeroMemory(pszBuf, (needBytes+1)*sizeof(char));
- WideCharToMultiByte(CP_ACP, 0, pWideChar, -1, pszBuf, needBytes, NULL, NULL);
- }
- return pszBuf;
- }
- wchar_t *AnsiCharToWide(char *pChar)
- {
- if (!pChar) return NULL;
- wchar_t *pszBuf = NULL;
- int needWChar = MultiByteToWideChar(CP_ACP, 0, pChar, -1, NULL, 0);
- if (needWChar > 0){
- pszBuf = new wchar_t[needWChar+1];
- ZeroMemory(pszBuf, (needWChar+1)*sizeof(wchar_t));
- MultiByteToWideChar(CP_ACP, 0, pChar, -1, pszBuf, needWChar);
- }
- return pszBuf;
- }
char *WideCharToAnsi(wchar_t *pWideChar)
{if (!pWideChar) return NULL;char *pszBuf = NULL;int needBytes = WideCharToMultiByte(CP_ACP, 0, pWideChar, -1, NULL, 0, NULL, NULL);if (needBytes > 0){pszBuf = new char[needBytes+1];ZeroMemory(pszBuf, (needBytes+1)*sizeof(char));WideCharToMultiByte(CP_ACP, 0, pWideChar, -1, pszBuf, needBytes, NULL, NULL);}return pszBuf;
}wchar_t *AnsiCharToWide(char *pChar)
{if (!pChar) return NULL;wchar_t *pszBuf = NULL;int needWChar = MultiByteToWideChar(CP_ACP, 0, pChar, -1, NULL, 0);if (needWChar > 0){pszBuf = new wchar_t[needWChar+1];ZeroMemory(pszBuf, (needWChar+1)*sizeof(wchar_t));MultiByteToWideChar(CP_ACP, 0, pChar, -1, pszBuf, needWChar);}return pszBuf;
}
Unicode字符集下CString/tchar*与char *转换 (解决中文乱码等)相关推荐
- Unicode字符集下CString与char *转换 (解决中文乱码等)(转)
UniCode 下 CString 转 char* 的方法的文章有很多,但是大部分都是在互相转载,看了那么多资料,仍然没有解决乱码的问题,后来从一个论坛的一条回复里面找到了正确的方法,特此拿出来与大家 ...
- WIN32开发之Unicode字符集下cstring转换为char[]相互转换
1.CString转char[] CString SeveName:// char ch[100]; memcpy(a, SeveName, SeveName.GetLength() * 2); fo ...
- mac终端下修改MySQL的编码格式以解决中文乱码问题--找不到my-default.cnf及my.cnf
查看一下support-files文件夹(Finder下"前往文件夹";路径:/usr/local/mysql/support-files) 里面有没有my-default.cnf ...
- Unicode字符集下WriteFile中文处理
最近在使用WriteFile函数时发现,vc2008中unicode字符集下处理中文乱码的一些解决方法,归纳如下 1. 写入的时候采用多字节char类型 HANDLE hFile;DWORD nByt ...
- Window下mysql5.7及以上版本插入中文乱码问题
Window下mysql5.7及以上版本插入中文乱码问题: 在C:\ProgramData\MySQL\MySQL Server 5.7\my.ini的my.ini文件中编辑 添加三项: [mysql ...
- mac下解决中文乱码的问题
mac下解决中文乱码的问题 参考文章: (1)mac下解决中文乱码的问题 (2)https://www.cnblogs.com/zhangjianbing/p/9029392.html 备忘一下.
- 解决中文乱码问题:使用编码转换工具
解决中文乱码问题:使用编码转换工具 问题 比如我们在上传项目到github的时候,可能会遇到一种情况:我们的eclipse和Myeclipse的默认编码格式一般都是GBK,可能一开始我们没有设置UTF ...
- 多字节字符集与Unicode字符集(CString char*和wchar_t* 容易出错的原因)
1.基本概念 2.L与_T 3.char TCHAR 与 wchar_t,strcpy wcscpy与_tcscpy 4.LPSTR,LPCSTR,LPTSTR,LPCTSTR,LPWSTR,LPCW ...
- CString、TCHAR*、char*转换 cstring与char *的转化(还包含很多种转换)
stringbasicsystemdeletenulldate <1>CString 转化为 char* [cpp] view plaincopyprint? CString strDat ...
最新文章
- 国内知名 IT 公司前端团队
- OpenCV 4.0 Dis光流算法 运动检测
- 指针传递内表方式做smartforms
- linux mysql 1366_Linux MySQl 5.7.17 MySQL ERROR 1366(HY000):Incorrect string value 解决方法
- 好色派:日省 6 小时,神策分析是我的“菜”
- 查看APK中MD5签名的方法
- 在同一基准下对前端框架进行比较(2019年更新)
- BZOJ2199: [Usaco2011 Jan]奶牛议会
- 基于CDS view生成的OData服务的metadata是如何加载的
- Ignoring query to other database
- 计算机网络基础端口号,1 计算机网络基础练习
- 网络:TCP通讯之 time_wait 状态
- php 模拟并发请求_PHP模拟并发请求
- C++笔记-利用远程线程注入获取PC版微信个人昵称
- linux静态网络ip dns怎么设置,Linux下如何配置静态IP设置DNS和主机名?
- 网友问有没有小米MIX 4 雷军的回应耐人寻味
- 储存管理系统c语言,C语言-图书管理系统-未做文件储存系统.docx
- php中curl的用法
- JAVA打印中文乱码问题
- 计算机拨号连接无法建立连接,电信拨号上网连接不上的解决方法