Windows 既可以使用 Unicode 字符集又可以使用传统的字符集(如多字节编码)来实现对多种语言的支持,以适应国际市场的要求。与传统的字符集编码相比,Unicode 是世界通用的字符编码标准,使用 16 位数据表示一个字符,一共可以表示 65535 种字符,可以包括现代计算机中所使用的所有字符,包括各种字母、文字、在出版业中使用的特殊符号等。

ANSI编码:

1、每种 ANSI 字符集只规定自己国家或地区使用的语言所需的'字符',比如简体中文编码标准 GB-2312 的字符集中就不会包含韩国人的文字。

2、ANSI 字符集的空间都比 ASCII 要大很多,一个字节已经不够,绝大多数 ANSI 编码标准都使用多个字节来表示一个字符,例如一个字节是负数,则将其后续的一个字节组合在一起表示一个字符。这种编码方式的字符集也称作"多字节"字符集。

3、ANSI 编码标准一般都会兼容 ASCII 码。

Unicode编码:

1、统一所有的字符使用两个字节来存放

2、将所有国家的语言都放到一个字符集里

Unicode的产生是为了解决许多8位无法标识的东西。

在 Windows 系统中,Unicode 字符编码和多字节字符编码都可以使用。

示例代码:

#include<windows.h>

int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow){
//const TCHAR * str = TEXT("123");
//TCHAR c[] = TEXT("提示框:");
//MessageBox(NULL, str, c, MB_OK);
//LPCWSTR szUnicode = L"This is a Unicode String;"; //LPWSTR类型是wchar_t *
//而 L"This is a Unicode String;" 的类型是 const wchar_t[26],它可以隐式转化为 const wchar_t *,但不可能隐式转化为 wchar_t * //定义LPCWSTR 类型的宽字符串
LPCWSTR szUnicode = L"This is a Unicode String;";
////定义LPCSTR 类型的窄字符串
LPCSTR szMutliByte = "This is not a Unicode String;";
//定义LPCTSTR 类型的自适用字符串
LPCTSTR szString = TEXT("This string is Unicode or not depends on the option."); //TCHAR a[] = TEXT("123"); //TEXT就是为L进行修饰 如果为UNICODE的话 那么这里的TCHAR就是WCHAR也就是wchar_t
//TCHAR * b = "123"; //如果不是UNICODE的话 那么TCHAR就是char //使用W 版本的API 函数,以宽字符串为参数
MessageBoxW(NULL, szUnicode, L"<字符编码1>", MB_OK);
//使用A 版本的API 函数,以窄字符串为参数
MessageBoxA(NULL, szMutliByte, "<字符编码2>", MB_OK);
//根据编译条件自动选择A 版本或W 版本的API 函数,采用相适应的字符串类型为参数
MessageBox(NULL, szString, TEXT("<字符编码3>"), MB_OK); return 0;
}

学习:多字节编码(ANSI)和UNICODE编码的关系的更多相关文章

  1. Ansi与Unicode编码

    视频教程:Ansi与Unicode编码 大家在编程时经常遇到的数据类型: ● Ansi: char   代表一个字符  (CHAR) char *  代表一个字符串指针   (PCHAR    PST ...

  2. 转换编码,将Unicode编码转换成可以浏览的utf-8编码

    //转换编码,将Unicode编码转换成可以浏览的utf-8编码 public function unicodeDecode($name) { $pattern = '/([\w]+)|(\\\u([ ...

  3. 通过对比ASCII编码来理解Unicode编码

    Unicode是个规范,可以理解为一个索引表,世界上所有字符基本上在这个索引表中都能找到唯一一个数码与之对应,就像ASCII码表一样,也是一个规范,也可以看成是一个索引表,所有的英文字符都可以在这个索 ...

  4. BIG5, GB(GB2312, GBK, ...), Unicode编码, UTF8, WideChar, MultiByte, Char说明与区别

    汉语unicode编译方式,BIG5是繁体规范,GB是简体规范 GB是大陆使用的国标码,BIG5码,又叫大五码,是台湾使用的繁体码. BIG5编码, GB编码(GB2312, GBK, ...), U ...

  5. 字符编码:ASCII,Unicode,UTF-8

    1.ASCII码美国制定的一套字符编码,对英语字符和二进制位之间的关系,做了统一规定.ASCII码一共规定了128个字符(包括32个不能打印出来的控制符号)的编码,占用一个字节,字节的最前面1位统一为 ...

  6. Unicode编码解码在线转换工具

    // Unicode编码解码在线转换工具 Unicode 是基于通用字符集(Universal Character Set)的标准来发展,并且同时也以书本的形式(The Unicode Standar ...

  7. .Net(c#)汉字和Unicode编码互相转换

    {"Tilte": "\u535a\u5ba2\u56ed", "Href": "http://www.cnblogs.com&q ...

  8. 常用中文字体 Unicode 编码

    各大网站的字体选择 网站 字体 腾讯 font: 12px "宋体","Arial Narrow",HELVETICA; 淘宝 font: 12px/1.5 t ...

  9. php unicode编码和字符串互转

    php字符串转Unicode编码, Unicode编码转php字符 百度了很多,都一样, 要么不对, 要不就是只是把字符串的汉字转Unicode 经过多次试验查找, 找到了如下方法, 注意:字符串编码 ...

随机推荐

  1. Sitecore 8.2 防火墙规则的权威指南

    如今,使用多层安全保护您的数据不再是奢侈品; 这是不容谈判的.此外,您需要确保Sitecore解决方案保持运行并与集成服务(例如SQL,Mongo,Solr)通信,同时保持相同的安全级别. 让我们假设 ...

  2. FPGA 开发板入手途径有哪些呢?

    买到一块 FPGA 开发板,你如何入手呢? 根据博主的经验,你可以通过如下途径来学习: 1.如果你是淘宝上买的,那么可以在淘宝上搜索你的开发板(一般 FPGA 开发板生厂商在淘宝上卖都会附带教程,如米 ...

  3. scratch教程:学做控制类积木

    少儿编程中scratch很容易被小孩所接受,不管是从外观还是教程中,都符合少儿的兴趣,为此现在只要是开少儿编程课都会有scratch课程,今天娜娜姐小码王scratch培训机构就为大家分享,scrat ...

  4. Docker 搭建简单 LVS

    LVS简介 LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中.该项目在Linux内核中实现了基 ...

  5. Scala 系列(十一)—— 模式匹配

    一.模式匹配 Scala 支持模式匹配机制,可以代替 swith 语句.执行类型检查.以及支持析构表达式等. 1.1 更好的swith Scala 不支持 swith,可以使用模式匹配 match.. ...

  6. Spring中扩展点汇总 ------------- 框架图

      原文链接:https://my.oschina.net/dachengxi/blog/3014156 转载于:https://my.oschina.net/dachengxi/blog/30141 ...

  7. 简单的C#日志记录和弹出提示

    记录这个博客的想法只有两点, 一,在使用webserver的时候如果你不好调用本地server端,那么你可以启用日志来查看异常.当然也可以调用本地的server端.这里简单说一下.不是本文的重点. 发 ...

  8. Django-xadmin的使用介绍

    Django-xadmin的介绍 Django是python的重量级web框架,写得少,做得多,非常适合后端开发,它很大的一个亮点是,自带后台管理模块,但它自带的后台管理有点丑,而Xadmin是基于b ...

  9. centos7 下gcc离线安装

    1.在centos安装镜像文件ios中的Packages文件夹中需找安装文件: 把需要的文件直接复制出来就行. 这里提醒的一点是,如果用命令行进入该文件夹,因为文件路径带空格,所以需要加上双引号: [ ...

  10. Java小知识点总结01

    1. 整数相乘或者相加,如果超过最大整数值,会变成负数 2. 字符串比较可以使用:s1.compareTo(s2) ,如果s1大于s2返回值大于1,等于返回值等于0,小于返回值小于1 3. char值 ...