Unicode环境下宽字符------->窄字符的转换

定义:TCHAR m_szIp[MAX_IP_LEN];   我们要将TCHANR类型数组(宽字符型)转换为char*pBuffer类型(窄字符型):

方法一:

[cpp] view plaincopy print?
  1. int nNum=WideCharToMultiByte(CP_ACP,0,m_szIp,-1,0,0,NULL,NULL);
  2. char* pBuffer=new char[nNum+1];
  3. 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

[cpp] view plaincopy print?
  1. USES_CONVERSION;
  2. char *pBuffer = T2A(m_szIp);
 USES_CONVERSION;char *pBuffer = T2A(m_szIp);

相反,同样情况下,窄字符--------->宽字符转换:

方法一:MultiByteToWideChar

方法二:A2T、A2W

下面是对方法一的两个函数的封装:

[cpp] view plaincopy print?
  1. char *WideCharToAnsi(wchar_t *pWideChar)
  2. {
  3. if (!pWideChar) return NULL;
  4. char *pszBuf = NULL;
  5. int needBytes = WideCharToMultiByte(CP_ACP, 0, pWideChar, -1, NULL, 0, NULL, NULL);
  6. if (needBytes > 0){
  7. pszBuf = new char[needBytes+1];
  8. ZeroMemory(pszBuf, (needBytes+1)*sizeof(char));
  9. WideCharToMultiByte(CP_ACP, 0, pWideChar, -1, pszBuf, needBytes, NULL, NULL);
  10. }
  11. return pszBuf;
  12. }
  13. wchar_t *AnsiCharToWide(char *pChar)
  14. {
  15. if (!pChar) return NULL;
  16. wchar_t *pszBuf = NULL;
  17. int needWChar = MultiByteToWideChar(CP_ACP, 0, pChar, -1, NULL, 0);
  18. if (needWChar > 0){
  19. pszBuf = new wchar_t[needWChar+1];
  20. ZeroMemory(pszBuf, (needWChar+1)*sizeof(wchar_t));
  21. MultiByteToWideChar(CP_ACP, 0, pChar, -1, pszBuf, needWChar);
  22. }
  23. return pszBuf;
  24. }
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 *转换 (解决中文乱码等)相关推荐

  1. Unicode字符集下CString与char *转换 (解决中文乱码等)(转)

    UniCode 下 CString 转 char* 的方法的文章有很多,但是大部分都是在互相转载,看了那么多资料,仍然没有解决乱码的问题,后来从一个论坛的一条回复里面找到了正确的方法,特此拿出来与大家 ...

  2. WIN32开发之Unicode字符集下cstring转换为char[]相互转换

    1.CString转char[] CString SeveName:// char ch[100]; memcpy(a, SeveName, SeveName.GetLength() * 2); fo ...

  3. mac终端下修改MySQL的编码格式以解决中文乱码问题--找不到my-default.cnf及my.cnf

    查看一下support-files文件夹(Finder下"前往文件夹";路径:/usr/local/mysql/support-files) 里面有没有my-default.cnf ...

  4. Unicode字符集下WriteFile中文处理

    最近在使用WriteFile函数时发现,vc2008中unicode字符集下处理中文乱码的一些解决方法,归纳如下 1. 写入的时候采用多字节char类型 HANDLE hFile;DWORD nByt ...

  5. Window下mysql5.7及以上版本插入中文乱码问题

    Window下mysql5.7及以上版本插入中文乱码问题: 在C:\ProgramData\MySQL\MySQL Server 5.7\my.ini的my.ini文件中编辑 添加三项: [mysql ...

  6. mac下解决中文乱码的问题

    mac下解决中文乱码的问题 参考文章: (1)mac下解决中文乱码的问题 (2)https://www.cnblogs.com/zhangjianbing/p/9029392.html 备忘一下.

  7. 解决中文乱码问题:使用编码转换工具

    解决中文乱码问题:使用编码转换工具 问题 比如我们在上传项目到github的时候,可能会遇到一种情况:我们的eclipse和Myeclipse的默认编码格式一般都是GBK,可能一开始我们没有设置UTF ...

  8. 多字节字符集与Unicode字符集(CString char*和wchar_t* 容易出错的原因)

    1.基本概念 2.L与_T 3.char TCHAR 与 wchar_t,strcpy wcscpy与_tcscpy 4.LPSTR,LPCSTR,LPTSTR,LPCTSTR,LPWSTR,LPCW ...

  9. CString、TCHAR*、char*转换 cstring与char *的转化(还包含很多种转换)

    stringbasicsystemdeletenulldate <1>CString 转化为 char* [cpp] view plaincopyprint? CString strDat ...

最新文章

  1. 国内知名 IT 公司前端团队
  2. OpenCV 4.0 Dis光流算法 运动检测
  3. 指针传递内表方式做smartforms
  4. linux mysql 1366_Linux MySQl 5.7.17 MySQL ERROR 1366(HY000):Incorrect string value 解决方法
  5. 好色派:日省 6 小时,神策分析是我的“菜”
  6. 查看APK中MD5签名的方法
  7. 在同一基准下对前端框架进行比较(2019年更新)
  8. BZOJ2199: [Usaco2011 Jan]奶牛议会
  9. 基于CDS view生成的OData服务的metadata是如何加载的
  10. Ignoring query to other database
  11. 计算机网络基础端口号,1 计算机网络基础练习
  12. 网络:TCP通讯之 time_wait 状态
  13. php 模拟并发请求_PHP模拟并发请求
  14. C++笔记-利用远程线程注入获取PC版微信个人昵称
  15. linux静态网络ip dns怎么设置,Linux下如何配置静态IP设置DNS和主机名?
  16. 网友问有没有小米MIX 4 雷军的回应耐人寻味
  17. 储存管理系统c语言,C语言-图书管理系统-未做文件储存系统.docx
  18. php中curl的用法
  19. JAVA打印中文乱码问题
  20. 计算机拨号连接无法建立连接,电信拨号上网连接不上的解决方法

热门文章

  1. 2019小程序没必要做了_2019微信小程序的发展前景怎么样?有必要开发微信小程序吗?...
  2. ActiveMQ学习笔记(21)----ActiveMQ集成Tomcat
  3. tar打包和解压命令
  4. 腾讯企业邮箱API实现单点登录和获取企业未读邮件
  5. 算法学习笔记(一):二分法及其实现
  6. C#设计模式(1)——单例模式
  7. POJ 2084 Catalan数+高精度
  8. 我积累的数据库操作类(ASP.NET)
  9. 在JSP中读取POST的JSON数据
  10. Java--类的成员