• 学习:多字节编码(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;
    }
    
    
    
  • 相关阅读:
    mysql联合主键自增、主键最大长度小记
    针对list集合进行分页展示
    初识javascript变量和基本数据类型
    12.19如何定义正则表达式
    人民币符号在html的显示方法
    windows下的NodeJS安装
    css 实现未知图片垂直居中
    IE678下placeholder效果,支持文本框和密码框
    jvm004 解析与分派
    jvm003 类加载的过程
  • 原文地址:https://www.cnblogs.com/zpchcbd/p/11901279.html
Copyright © 2020-2023  润新知