VC2005中MessageBox输出时的乱码问题

ltolll 2007-07-16 02:42:39
MessageBox(L"abc\0");
char* strT;
strT="abc\0";
MessageBox((LPCTSTR)strT);

第一个MessageBox(以字符串常量形式)输出则正常--abc
第二个MessageBox(以变量形式)输出则错误,ab的位置为乱码--XXc
---------------------------
网上搜了一下,说是与ANSI和Unicode有关,可是却搞不太清.

这里想问,我如果想用ANSI输出时怎么办,想用Unicode输出时怎么办?
对于一个未知的字符串,我如何知道它是ANSI还是Unicode?
...全文
839 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sky_lily_1985 2012-05-15
  • 打赏
  • 举报
回复
强制转换过程中,类型编码不同所致,LPCTSTR支持由宏定义_T所修饰的字符串。
liangls1982 2010-01-24
  • 打赏
  • 举报
回复
用了 _T ,但是输出的还是乱码。。。
ltolll 2007-10-31
  • 打赏
  • 举报
回复
http://ltoiii.blog.163.com/blog/static/2438286420079315028500/
2021‘someday 2007-10-23
  • 打赏
  • 举报
回复
你这个问题解决了没有啊,我也遇到同样的问题,
MessageBox(以字符串常量形式)输出则正常--abc
MessageBox(以变量形式)输出则错误,为乱码--XXX
而且是有Mobile平台,不支持CString,这个要怎么解决啊?
2021‘someday 2007-10-23
  • 打赏
  • 举报
回复
esfsf
zhuzhu101011 2007-07-19
  • 打赏
  • 举报
回复
strT=_T("abc\0");
44
liumeiqinyang 2007-07-19
  • 打赏
  • 举报
回复
楼上说的对吧,是在强制转换过程中,类型编码不同所致,LPCTSTR支持由宏定义_T所修饰的字符串。
ltolll 2007-07-16
  • 打赏
  • 举报
回复
晕,是不是我题目里没说清?
MessageBox(以字符串常量形式)输出则正常--abc
MessageBox(以变量形式)输出则错误,ab的位置为乱码--XXc

我的调试环境:XP+VC2005,很可能跟VC版本有关.
  • 打赏
  • 举报
回复
MessageBox(_T("abc"));

或者
CString str;
str="abc";
MessageBox(str);
ltolll 2007-07-16
  • 打赏
  • 举报
回复
_T("abc")支持unicode
----------------------
char* sss=_T("abc");
这样定义报错,不知道你想说的什么意思?
yasmong 2007-07-16
  • 打赏
  • 举报
回复
_T("abc")支持unicode

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧