| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 367 人关注过本帖
标题:简单字符串输出引发的问题
只看楼主 加入收藏
jsjwql
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-8-1
收藏
 问题点数:0 回复次数:1 
简单字符串输出引发的问题

我在自己的机器上做了一个小测试,开发环境VS2005,得到了一些让我比较疑惑的结果。

代码如下:
#include "stdafx.h"
#include "iostream"
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
char *str = "ASCII string 我是中国人 ASCII string";
wchar_t *wStr = L"Unicode string 我是中国人 Unicode string";
TCHAR *tStr = _T("TCHAR string 我是中国人 TCHAR string");

cout<<*str<<endl;
cout<<str<<endl;

wcout<<*wStr<<endl;
wcout<<wStr<<endl;

#ifndef _UNICODE
cout<<*tStr<<endl;
cout<<tStr<<endl;
#else
wcout<<*tStr<<endl;
wcout<<tStr<<endl;
#endif

return 0;
}
该代码分别在Multi-Byte Character Set, Unicode, No set 三个环境下进行编译得到一下结果:

---------NO set--------------
A
ASCII string 我是中国人 ASCII string
U
Unicode string T //1.中文以及后面的字符都没有显示出来?
TCHAR string 我是中国人 TCHAR string


------Use Multi-Byte Character Set-----

A
ASCII string 我是中国人 ASCII string
U
Unicode string T //2. 这里T之前居然没有换行?
TCHAR string 我是中国人 TCHAR string


-------Use Unicode Character Set--------
A
ASCII string 我是中国人ASCII string
U
Unicode string //3.TCHAR的字符没有显示出来?

问题:4.汉字在No set和 Multi-Byte Character Set 下, 内存中是什么样的编码方式?我知道汉字有GB2312, GBK等编码方式。


紧接着我把控制面板里的区域与语言中的高级里面的“Language for non-Unicode programs”从chinese改成了English(us),重启机器用vs2005再打开代码的时候
发现“我是中国人”字符串已经变成了乱码"ÎÒÊÇÖ&ETH;¹úÈË"

5. 我想这是不是应为我之前在vs2005输入中文的时候,保存的cpp是不是以ANSI方式保存的造成的?(记事本里面有好几种保存编码方式)

在没有做任何修改的情况下我有在三种不同编译方式下运行代码,得出的结果是:
--------------NO set--------------
A
ASCII string ╬╥╩╟╓╨╣·╚╦ ASCII string
U
Unicode string ╬╥╩╟╓╨╣·╚╦ Unicode string
T
TCHAR string ╬╥╩╟╓╨╣·╚╦ TCHAR string

----------------Use Multi-Byte Character Set--------
A
ASCII string ╬╥╩╟╓╨╣·╚╦ ASCII string
U
Unicode string ╬╥╩╟╓╨╣·╚╦ Unicode string
T
TCHAR string ╬╥╩╟╓╨╣·╚╦ TCHAR string


----------Use Unicode Character Set----------------
A
ASCII string ╬╥╩╟╓╨╣·╚╦ ASCII string
U
Unicode string ╬╥╩╟╓╨╣·╚╦ Unicode string
T
TCHAR string ╬╥╩╟╓╨╣·╚╦ TCHAR string

问题:
6. 怎么三种情况下的结果都是一样? 还有为什么这些字符串没有像前一次运行时被自动截断?

7. 以后我们再处理中文时候应该注意些什么,比如对文件的命名,保存中文文档时等等


问题比较多,请高手指点指点,谢谢!

搜索更多相关主题的帖子: 字符 输出 
2007-08-01 12:53
jsjwql
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-8-1
收藏
得分:0 
有高手指点吗?
2007-08-01 14:38
快速回复:简单字符串输出引发的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015626 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved