永发信息网

wchar_t乱码

答案:2  悬赏:30  手机版
解决时间 2021-04-06 03:51
wchar_t Name[MAX_PATH];
RegQueryValueEx(hKey, Itemname, 0, &Type, (LPBYTE)Name, &size );

Name值为乱码
最佳答案
如果当前工程设置为非UNICODE的话那么这个肯定是乱码了,既然用了wchar_t就应该用RegQueryValueExW,另外buff长度要大一些,MAX_PATH很有可能不够用的,还有size赋值了没有?没赋值的话也不行

改成
wchar_t Name[ 1024 ];

wmemset(Name,0,1024);
DWORD size =1024;
RegQueryValueExW(hKey, Itemname, 0, &Type, (LPBYTE)Name, &size );试试还是不是乱码
全部回答
1. wchar_t是c/c++的字符数据类型,char是8位字符类型,最多只能包含256种字符,许多外文字符集所含的字符数目超过256个,char型无法表示。 wchar_t数据类型一般为16位或32位,但不同的c或c++库有不同的规定,如gnu libc规定wchar_t为32位[1],总之,wchar_t所能表示的字符数远超char型。 2.l'中'前面有个大写的l是指宽字符。 ansi字符集称为窄字符,8位,c语言用unsigned char表示,不能存放世界上所有语言所有文字。 unicode字符集称为宽字符,16位,c语言用unsigned short表示,可以存放世界上所有语言所有文字。 当今时代,应该杜绝ansi的应用程序了,转而发展unicode的程序!! vc++6.0之前没有关键字wchar_t,用unsigned short表示wchar; vc++7.0之后有了关键字wchar_t,用来表示wchar,及宽字符; unicode 是支持所有字符集(包括无法以单个字节表示的字符集)的规范。为国际市场编程时应考虑使用 unicode 或多字节字符集 (mbcs),或使程序能够通过更改开关来生成支持两种字符集之一的程序。 宽字符是双字节多语言字符代码。在当今的全球计算业内使用的大多数字符(包括技术符号和特殊的发布字符),都可以根据 unicode 规范表示为宽字符形式。无法以 1 个宽字符表示的字符可以通过 unicode 的代理项功能以 unicode 对表示。由于每个宽字符总是以固定的 16 位大小表示,因此使用宽字符可以简化使用国际字符集进行的编程。 宽字符字符串表示为一个 wchar_t[] 数组并由 wchar_t* 指针指向它。可以通过用字母 l 作为字符的前缀将任何 ascii 字符表示为宽字符形式。例如,l'\0' 是终止宽(16 位)null 字符。同样,可以通过用字母 l 作为 ascii 字符串的前缀 (l"hello") 将任何 ascii 字符串表示为宽字符字符串形式。 通常,宽字符在内存中占用的空间比多字节字符多,但处理速度更快。另外,在多字节编码中一次只能表示一个区域设置,而世界上的所有字符集都同时以 unicode 表示形式表示。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
老公三十而立的祝福语,老公而立之年了求生日
上面一个厂,厂下面一个人,怎么读
成都市众一养殖有限公司骗局吗?
关于速度、速度的变化量及加速度的说法,不正
安全标语大全幼儿园,幼儿园春游横幅标语
六一节的发言稿
输入法把打字框挡住了,怎么解决
工程硕士 学历能不能填 硕士研究生
城市中用的家用风力发电机大概什么价格
4.48÷x=6.4
清明假期间,小明与同学一起去野炊,他准备了
枝江市金润源建设投资控股集团有限公司在什么
2.15时=________分3.06吨=________吨________
清风茶什么地方有卖
冰封重生结局什么意思
推荐资讯
福州的机场大巴最迟几点?我是21:30到长乐机
如果XBOX360手柄的编码和主机不一样是什么情
金毛一直流眼泪,怎么办
(32分)阅读材料,完成下列各题。材料一随着
通过哪个渠道推广最好
补仓如何计算成本
山地车后轮旁边两个支架,能站人的叫什么
测rtk的时候为什么有时候float,有时候fixed
门窗十大品牌有那些?
形容没有防人之心的成语
kk私人美甲工作室地址在什么地方,想过去办事
最近汉字改革更新了哪些?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?