ANSI,MBCS,UNICODE

原创 2006年06月21日 20:05:00


编程的书中经常介绍UNICODE,还有字符串函数中经常见各种格式,下面以以"abc我你他"为例分别介绍

测试源码:

TCHAR* p = _T("abc我你他"); 
std::cout << _tcsclen(p);

我们写的代码应该是这个样子的,即既符合ANSI又符合UNICODE的代码,使用_T宏和_ts函数集。

一、ANSI编码:普通英文字母一个,汉字占两个字节。"abc我你他"占用9个字节。
 
 编译选项里没有相关选项
 输出9
 此时,_tcsclen为strlen,结果为字节数。

 使用多字符函数,即MultiByte函数,编译选项里设置_MBCS, 该选项VC默认生成的工程里有(Project->Setting->C++->Preprocessor Setting)。
 此时_tcsclen 为_mbslen。输出结果为6,实际占用9个字节。

二、UNICODE编码,所谓宽字符,英文字符和汉字都占用2个字节,编译选项里设置_UNICODE,UNICODE
 源码相当于wchar_t* p = L"abc我你他";
  std::cout << wcslen(p);
 结果为6,实际占用12个字节。;

相关文章推荐

ANSI、MBCS、UNICODE字符集

1.三种计算机字符集    计算机字符集可归类为三种,单字节字符集(SBCS)、多字节字符集(MBCS)和宽字符集(即Unicode字符集)。   单字节字符集(SBCS): ...

VS2005中UNICODE和ANSI以及MBCS的问题

我们在编写Visual C++ 2005程序时候经常会碰到(如下错误),很迷惑    'CreateWindowExW' : cannot convert parameter 1 from '...
  • xcntime
  • xcntime
  • 2012年08月12日 11:20
  • 791

unicode 和 mbcs、ansi 转换

1: 首先更改项目属性为多字节字符集. 2: 对于所有 L"字符串", 去掉L, 或改为=> _T("字符串")       ps1: _T是个自动替换的宏, 可以根据编译条件的不同, 替换成不...

ANSI,MBCS和Unicode三种编码方式使用swprintf函数的陷阱

我们可能平时经常使用swprintf这个API函数,其实这个函数存在很容易让人误解的陷阱,有时在我们的程序使用的时候平时不会出现错误,可是这些API函数的误使用可能会产生一些偶然的错误,这些错误是相当...

UNICODE和ANSI以及MBCS的问题

UNICODE    计算机发明后,为了在计算机中表示字符,人们制定了一种编码,叫ASCII码。ASCII码由一个字节中的7位(bit)表示 ,范围是0x00 - 0x7F 共128个字符。他们以为...
  • ucnioa
  • ucnioa
  • 2014年03月05日 22:59
  • 426

升级VC6源码mbcs转unicode

  • 2015年08月07日 17:24
  • 137KB
  • 下载

unicode和MBCS(多字节字符集)的关系

转载地址:http://blog.csdn.net/garfield2005/article/details/7681299 ************************************...
  • ownfire
  • ownfire
  • 2016年07月08日 18:38
  • 749

Ascii Unicode Mbcs Utf8 Charset Encoding Codepage Font

ANSI/ASCII :由美国国家标准委员会指定的是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO 646 。 MB...

unicode和MBCS

1: 首先更改项目属性为多字节字符集.2: 对于所有 L"字符串", 去掉L, 或改为=> _T("字符串")       ps1: _T是个自动替换的宏, 可以根据编译条件的不同, 替换成不同的东西...

Unicode和多字节字符集 (MBCS)

Unicode和多字节字符集 (MBCS) 杂谈 (2012-05-17 22:39:08) 转载▼     这个估计是很多人曾经头疼过的问题,现在的VC...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ANSI,MBCS,UNICODE
举报原因:
原因补充:

(最多只允许输入30个字)