windows 下UNICODE 多字节和utf-8相互转化
来源:互联网 发布:鸿业造价软件 编辑:程序博客网 时间:2024/06/05 17:41
很多时候我们需要UNICODE,utf-8和ascii相互转化,windows提供了相关api但是不是特别好用,很多时候还会出错,封装一份自己的字符转化函数,使用的时候就不用那么麻烦了,需要的时候,直接调用就好。
#pragma onceclass CConvertChar{public: CConvertChar() = default; ~CConvertChar();public: static int UnicodeToAnsi(LPSTR szAnsi,LPCWSTR wstrUnicode); static int AnsiToUnicode(LPWSTR wstrUnicode, LPCSTR szAnsi); static int UTF8ToUnicode(LPWSTR wstrUnicoe, LPCSTR szUTF8); static int UnicodeToUTF8(LPSTR szUTF8, LPCWSTR wszUnicode);};
CConvertChar::~CConvertChar(){}int CConvertChar::UnicodeToAnsi(LPSTR szAnsi, LPCWSTR wstrUnicode){ DWORD dwMinSize = 0; //转化后需要多少多字节来存储 dwMinSize = WideCharToMultiByte(CP_OEMCP, 0, wstrUnicode, -1, NULL, 0, NULL, FALSE); if (0 == dwMinSize) { return 0; } WideCharToMultiByte(CP_OEMCP, 0,wstrUnicode, -1, szAnsi, dwMinSize, NULL, FALSE); return dwMinSize;}int CConvertChar::AnsiToUnicode(LPWSTR wstrUnicode, LPCSTR szAnsi){ DWORD dwMinSize = 0; dwMinSize = MultiByteToWideChar(CP_ACP, 0, szAnsi, -1, NULL, 0); if (0 == dwMinSize) { return 0; } MultiByteToWideChar(CP_ACP, 0,szAnsi, -1,wstrUnicode, dwMinSize); return dwMinSize;}int CConvertChar::UTF8ToUnicode(LPWSTR wstrUnicoe, LPCSTR szUTF8){ //转换后Unicode的长度 DWORD dwMinSize = MultiByteToWideChar(CP_UTF8, 0, szUTF8, -1, NULL, 0); if (0 != dwMinSize) { //转为Unicode dwMinSize = MultiByteToWideChar(CP_UTF8, 0, szUTF8, -1, wstrUnicoe, dwMinSize); return dwMinSize; } return 0;}int CConvertChar::UnicodeToUTF8(LPSTR szUTF8, LPCWSTR wszUnicode){ int dwMinSize = WideCharToMultiByte(CP_UTF8, 0, wszUnicode, -1, NULL, 0, NULL, NULL); if (dwMinSize) { dwMinSize = WideCharToMultiByte(CP_UTF8, 0, wszUnicode, -1, szUTF8,dwMinSize,NULL,NULL); } return dwMinSize;}
阅读全文
0 0
- windows 下UNICODE 多字节和utf-8相互转化
- windows下utf-8和unicode的相互转换
- linux和windows下 unicode、GBK、utf-8 互相转化
- 多字节<--->Unicode<--->UTF-8
- ANSI、UTF-8、UNICODE字符串相互转化
- 多字节 unicode和utf-8的转换
- 多字节和Unicode转utf-8,并写成文件
- 多字节 unicode和utf-8的转换
- Unicode 多字节 utf-8互转
- MFC中,Unicode和多字节字符集下 CString和char的转化
- MFC中,Unicode和多字节字符集下 CString和char的转化
- MFC中,Unicode和多字节字符集下 CString和char的转化
- VC下utf-8 ansii相互转化
- unicode 和utf-8的转化
- unicode字符和多字节字符的相互转换接口
- c++宽字符和多字节字符相互转化类
- 多字节与UTF-8、Unicode之间的转换
- 多字节、UTF-8、Unicode之间的转换
- 「恐怖五司」主导下的AI时代,谷歌会吃掉下一个谷歌吗?
- 面向对象章节练习(实现用户和密码一致)
- linux iptables fireward防火墙
- 封锁阳光大学
- 通过递归实现 1-100的加法源码
- windows 下UNICODE 多字节和utf-8相互转化
- 网管:我再也不要背这个黑锅了!
- 两名软件工程师跳槽后,意外对调工作,结果工资都涨了
- Pixel 2导航栏藏菜单键证实为BUG:谷歌将封杀
- Xcode9学习笔记40
- 编程中的24条经典语录
- 015 方程组的拓展(2个定理)
- A Quick and Easy Guide to tmux
- Xcode9学习笔记41