学习:多字节编码(ANSI)和UNICODE编码的关系
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编码的关系的更多相关文章
- Ansi与Unicode编码
视频教程:Ansi与Unicode编码 大家在编程时经常遇到的数据类型: ● Ansi: char 代表一个字符 (CHAR) char * 代表一个字符串指针 (PCHAR PST ...
- 转换编码,将Unicode编码转换成可以浏览的utf-8编码
//转换编码,将Unicode编码转换成可以浏览的utf-8编码 public function unicodeDecode($name) { $pattern = '/([\w]+)|(\\\u([ ...
- 通过对比ASCII编码来理解Unicode编码
Unicode是个规范,可以理解为一个索引表,世界上所有字符基本上在这个索引表中都能找到唯一一个数码与之对应,就像ASCII码表一样,也是一个规范,也可以看成是一个索引表,所有的英文字符都可以在这个索 ...
- BIG5, GB(GB2312, GBK, ...), Unicode编码, UTF8, WideChar, MultiByte, Char说明与区别
汉语unicode编译方式,BIG5是繁体规范,GB是简体规范 GB是大陆使用的国标码,BIG5码,又叫大五码,是台湾使用的繁体码. BIG5编码, GB编码(GB2312, GBK, ...), U ...
- 字符编码:ASCII,Unicode,UTF-8
1.ASCII码美国制定的一套字符编码,对英语字符和二进制位之间的关系,做了统一规定.ASCII码一共规定了128个字符(包括32个不能打印出来的控制符号)的编码,占用一个字节,字节的最前面1位统一为 ...
- Unicode编码解码在线转换工具
// Unicode编码解码在线转换工具 Unicode 是基于通用字符集(Universal Character Set)的标准来发展,并且同时也以书本的形式(The Unicode Standar ...
- .Net(c#)汉字和Unicode编码互相转换
{"Tilte": "\u535a\u5ba2\u56ed", "Href": "http://www.cnblogs.com&q ...
- 常用中文字体 Unicode 编码
各大网站的字体选择 网站 字体 腾讯 font: 12px "宋体","Arial Narrow",HELVETICA; 淘宝 font: 12px/1.5 t ...
- php unicode编码和字符串互转
php字符串转Unicode编码, Unicode编码转php字符 百度了很多,都一样, 要么不对, 要不就是只是把字符串的汉字转Unicode 经过多次试验查找, 找到了如下方法, 注意:字符串编码 ...
随机推荐
- [转帖]【rinetd】CentOS7.x上轻量级TCP转发工具rinetd的安装配置
[rinetd]CentOS7.x上轻量级TCP转发工具rinetd的安装配置 https://www.jianshu.com/p/2605d247b944 这一个写的更加全面了. 2019.07.0 ...
- C# 实现Escape UnEscape方法(支持中文-转载)
//Escape方法 public static string Escape(string s) { StringBuilder sb = new StringBuilder(); byte[] by ...
- Docker在linux系统下的安装
系统要求 本安装教程仅限于CentOS7,其他系统不适用.centos-extras仓库必须是启用状态,这个仓库默认状态是启用,如果不是启用状态,请修改. 卸载旧版本的Docker Docker的旧版 ...
- 百度云 2G 4核 服务器拼团链接
拼团链接如下: https://cloud.baidu.com/campaign/ABCSale-2019/index.html?teamCode=P3D6DV8T
- TJOI2018简要题解
Day1T1数学计算 按照时间轴建一棵线段树即可,复杂度为\(O(m \log m)\) #include <bits/stdc++.h> #define N 100005 #define ...
- Java学习:switch语句使用的注意事项
switch语句使用的注意事项: 多个case后面的数值不可以重复. switch后面的小括当中只能是下列数据类型: 基本数据类型:byte/short/char/int 引用数据类型:String字 ...
- Mysql系列(二)—— Mysql支持的数据类型
Mysql版本众多,每个版本支持的数据类型繁多且不一样,本篇文章中主要基于MySQL Community Server 5.7.22介绍常用的数据类型,包括其特点以及区别. 一.数据类型 正确的定义表 ...
- Date+闭包
date类: var time=new.date() get date() 返回一个月中的某一天 get day () 返回一周中的某一天 get fullyear() 对象以四位数返回年份 get ...
- 【Java深入研究】11、深入研究hashmap中的hash算法
一.简介 大家都知道,HashMap中定位到桶的位置 是根据Key的hash值与数组的长度取模来计算的. JDK8中的hash 算法: static final int hash(Object key ...
- 12、微信小程序实现授权
在index.wxml中: <!--index.wxml--> <view wx:if="{{isHide}}"> <view wx:if=" ...