widechartomultibyte一个API函数怎么用

widechartomultibyte  时间:2021-07-16  阅读:()

sqlite乱码

一种方式是:设置数据编码为 GB2312 ..(在SQLite数据库管理器那边可以改)..[推荐]

然后不然就是在代码里面重新转换数据..这种方式比较麻烦,也耗资源...

思路是先将从sqlite数据库读取出的nvarchar 转换成byte[] 数组..然后 调用 System.Text.Encoding.Unicode.GetString(byte[] 数组); 它返回的应该是 无乱码的数据了.

只是一时想到的两种方式.. 可能还有好的解决办法吧...

pb 调用怎么调用MultiByteToWideChar函数

为了支持Unicode编码,需要多字节与宽字节之间的相互转换。

这两个系统函数在使用时需要指定代码页,在实际应用过程中遇到乱码问题,然后重新阅读《Windows核心编程》,总结出正确的用法。

WideCharToMultiByte的代码页用来标记与新转换的字符串相关的代码页。

MultiByteToWideChar的代码页用来标记与一个多字节字符串相关的代码页。

常用的代码页由CP_ACP和CP_UTF8两个。

使用CP_ACP代码页就实现了ANSI与Unicode之间的转换。

使用CP_UTF8代码页就实现了UTF-8与Unicode之间的转换。

下面是代码实现: 1. ANSI to Unicode wstring ANSIToUnicode( const string& str ) { int len = 0; len = str.length(); int unicodeLen = ::MultiByteToWideChar( CP_ACP, 0, str.c_str(), -1, NULL, 0 ); wchar_t * pUnicode; pUnicode = new wchar_t[unicodeLen+1]; memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t)); ::MultiByteToWideChar( CP_ACP, 0, str.c_str(), -1, (LPWSTR)pUnicode, unicodeLen ); wstring rt; rt = ( wchar_t* )pUnicode; delete pUnicode; return rt; } 2. Unicode to ANSI string UnicodeToANSI( const wstring& str ) { char* pElementText; int iTextLen; // wide char to multi char iTextLen = WideCharToMultiByte( CP_ACP, 0, str.c_str(), -1, NULL, 0, NULL, NULL ); pElementText = new char[iTextLen + 1]; memset( ( void* )pElementText, 0, sizeof( char ) * ( iTextLen + 1 ) ); ::WideCharToMultiByte( CP_ACP, 0, str.c_str(), -1, pElementText, iTextLen, NULL, NULL ); string strText; strText = pElementText; delete[] pElementText; return strText; } 3. UTF-8 to Unicode wstring UTF8ToUnicode( const string& str ) { int len = 0; len = str.length(); int unicodeLen = ::MultiByteToWideChar( CP_UTF8, 0, str.c_str(), -1, NULL, 0 ); wchar_t * pUnicode; pUnicode = new wchar_t[unicodeLen+1]; memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t)); ::MultiByteToWideChar( CP_UTF8, 0, str.c_str(), -1, (LPWSTR)pUnicode, unicodeLen ); wstring rt; rt = ( wchar_t* )pUnicode; delete pUnicode; return rt; } 4. Unicode to UTF-8 string UnicodeToUTF8( const wstring& str ) { char* pElementText; int iTextLen; // wide char to multi char iTextLen = WideCharToMultiByte( CP_UTF8, 0, str.c_str(), -1, NULL, 0, NULL, NULL ); pElementText = new char[iTextLen + 1]; memset( ( void* )pElementText, 0, sizeof( char ) * ( iTextLen + 1 ) ); ::WideCharToMultiByte( CP_UTF8, 0, str.c_str(), -1, pElementText, iTextLen, NULL, NULL ); string strText; strText = pElementText; delete[] pElementText; return strText; }

如何将unsigned short 转换成unsigned char

unsigned short 转换为 unsigned char可以这样转: unsigned short * word; int size= WideCharToMultiByte(CP_ACP,0,word,-1, NULL, 0, NULL,0); char * AsciiBuff =new char[size]; WideCharToMultiByte(CP_ACP,0,word,-1,AsciiBuff,size, NULL, 0);

error C2664: "WideCharToMultiByte": 不能将参数 3 从"CString"转换为"LPCWSTR",参数3是m_edit

m_edit是你添加的Edit控件的变量吧 你是要把这个Edit控件里面的内容传进这个参数么 如果是的话, CString cstrEditString; m_edit.GetWindowText(cstrEditString); 然后把 WideCharToMultiByte的第三个参数改为cstrEditString

一个API函数怎么用

WideCharToMultiByte   函数功能:该函数映射一个unicode字符串到一个多字节字符串。

  函数原型:   int WideCharToMultiByte(   UINT CodePage, //指定执行转换的代码页   DWORD dwFlags,   LPCWSTR lpWideCharStr, //指定的宽字节字符串的缓冲区   hWideChar, //指定由参数lpWideCharStr指向的缓冲区的字符个数   LPSTR lpMultiByteStr, //指向接收被转换字符串的缓冲区   hMultiByte, //指定由参数lpMultiByteStr指向的缓冲区最大值   LPCSTR lpDefaultChar,   LPBOOL pfUsedDefaultChar   ); 范例: wchar_t wText[20] = {L"宽字符转换实例!OK!"}; DWORD dwNum = WideCharToMultiByte(CP_OEMCP,NULL,lpcwszStr,-1,NULL,0,NULL,FALSE); char *psText; psText = new char[dwNum]; if(!psText) { delete []psText; } WideCharToMultiByte (CP_OEMCP,NULL,lpcwszStr,-1,psText,dwNum,NULL,FALSE); delete []psText;

水墨云历史黑名单IDC,斟酌选购

水墨云怎么样?本站黑名单idc,有被删除账号风险,建议转出及数据备份!水墨云ink cloud Service是成立于2017年的商家,自2020起开始从事香港、日本、韩国、美国等地区CN2 GIA线路的虚拟服务器租赁,同时还有台湾、国内nat vps相关业务,也有iplc专线产品,相对来说主打的是大带宽服务器产品。注意:本站黑名单IDC,有被删除账号风险,请尽量避免,如果已经购买建议转出及数据备...

久久网云-目前最便宜的国内,香港,美国,日本VPS云服务器19.9元/月起,三网CN2,2天内不满意可以更换其他机房机器,IP免费更换!。

久久网云怎么样?久久网云好不好?久久网云是一家成立于2017年的主机服务商,致力于为用户提供高性价比稳定快速的主机托管服务,久久网云目前提供有美国免费主机、香港主机、韩国服务器、香港服务器、美国云服务器,香港荃湾CN2弹性云服务器。专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端服务部署,促使用户云端部署化简为零,轻松快捷运用云计算!多年云计算领域服务经验,遍布亚太地区的海量节点为...

腾讯云轻量服务器两款低价年付套餐 2核4GB内存8M带宽 年74元

昨天,有在"阿里云秋季促销活动 轻量云服务器2G5M配置新购年60元"文章中记录到阿里云轻量服务器2GB内存、5M带宽一年60元的活动,当然这个也是国内机房的。我们很多人都清楚备案是需要接入的,如果我们在其他服务商的域名备案的,那是不能解析的。除非我们不是用来建站,而是用来云端的,是可以用的。这不看到其对手腾讯云也有推出两款轻量服务器活动。其中一款是4GB内存、8M带宽,这个比阿里云还要狠。这个真...

widechartomultibyte为你推荐
人民日报谈扫码点餐为什么现在餐馆要搞扫码点餐?在线课堂钉钉群直播和在线课堂的区别?网页微信客户端什么叫微信网页版?和电脑版是一回事吗?有b吗有什么好看的b级片民生电商民生电商与传统的电商有什么区别?layoutsubviews如何自定义UISearchBar?12306注册12306网站账户注册国外社交网站国外联合中国的交友网站mac地址过滤MAC地址过滤有什么用思科网络工程师网络工程师与思科认证的网络工程师有什么区别
网易域名邮箱 idc评测 arvixe 电影服务器 mysql主机 浙江独立 什么是刀片服务器 刀片服务器是什么 最好的免费空间 91vps 免费高速空间 国外免费asp空间 中国电信宽带测速器 raid10 路由跟踪 云服务器比较 ledlamp accountsuspended register.com 美国asp空间 更多