MultiByte转UTF8的函数,汉字全变为问号
是从这一句执行后,原来字串里别的字符都对,但是汉字全变成了'?',并显示Invalid characters in string有没有人知道怎么回事哦
string CDllValidateDlg::MultiByteToUtf8( const char* pszMultiByte )
{
string strUtf8;
if( NULL == pszMultiByte )
{
return strUtf8;
}
int iNumCharacter = 0;
//convert from MultiByte to WideChar
wstring wcsText;
iNumCharacter = MultiByteToWideChar( CP_ACP, 0, pszMultiByte, -1, NULL, 0 );
wcsText.resize( iNumCharacter + 1 );//addition 1 for '\0'
MultiByteToWideChar( CP_ACP, 0, pszMultiByte, -1, &wcsText[ 0 ], iNumCharacter );
//convert from WideChar to utf8
iNumCharacter = WideCharToMultiByte( CP_UTF8, 0, &wcsText[ 0 ], -1, NULL, 0, NULL, NULL );
strUtf8.resize( iNumCharacter + 1 );
WideCharToMultiByte( CP_UTF8, 0, &wcsText[ 0 ], -1, &strUtf8[ 0 ], iNumCharacter, NULL, NULL );
DWORD error = GetLastError();
return strUtf8;
}MultiByte 转为 WideChar 是对的
WideChar 转为 MultiByte 汉字全部变成问号了
而且这个函数我之前一直在用,是刚刚修改程序增加了线程之后,在线程里出错的。
相关推荐
stm32\编译utf8文件的问题.docx
在keil开发过程中,有的情况下文件必须是utf8格式,如果不是utf8格式,编译出来运行起来是乱码,但是keil默认情况下编译不支持utf8格式的文件。网上到处的说法是增加no-multibyte-chars选项,但是作为初学者,不知道怎么设置,笔者也折腾了好久,最后在官网上找到解决方法,共享出来,大家不要走弯路了。
MySql 8.0.16版本安装提示已经不使用“UTF8B3”而是使用“UTF8B4”问题
在MySQL 8.0.16版本中安装可能会出现部分错误提示已经不使用“UTF8B3”而是使用了“UTF8B4” #/////////////////////以下为my.ini中的内容////////////////////// [mysqld] # 设置3306端口 port=3306 # 设置mysql的安装目录 basedir= #这里记得填 # 设置mysql数据库的数据的存放目录(此目录会在之后进行命令生成,无需手写) datadir= \data #这里记得填 # 允许最大连接数 max_connection
PHP UTF8中文字符截断函数代码
今天需要用一个UTF-8的字符串截断函数,网上找了几个代码片段发现都有问题,于是查了一下原理自己写了一个函数,代码片段如下
C++ Convert 多种字符转换函数
C++ Convert 多种字符转换函数,网络上收集的多种整合, 自己看着选一个来用用就可以。 C++ Convert 多种字符转换函数,网络上收集的多种整合, 自己看着选一个来用用就可以。
php简单截取字符串代码示例
本文实例讲述了php简单截取字符串的方法。分享给大家供大家参考,具体如下: //截取摘要 public static function mbsubstr($str){ $strleng = mb_strlen($str,"utf8"); $mbstr = mb_substr($str,0,140,'utf8'); $strdstr = mb_substr($str,140,$strleng,'utf8'); $strlengs = mb_strlen($strdstr,'utf8'); $strc = ""; for($i=0;$i<$strlengs;$i++){


资源
