ANSI字符集  所支持的就是多字节的也叫窄字节,类型来说就对应char类型。
Unicode字符集 也叫宽字符集 所支持的就是宽字符集,从类型上来说就是 wchar_t类型。
gb2312是中国的编码,Big5是中国香港和中国台湾的编码。
为什么有时我们所做的程序会出现乱码呢?

首先编码就是一个编码对应一个字符,gb2312 用2个字节表示所有的汉字,也就可能从0开始表示2^15个中文所用到的字符。
Big5也是用两个字节表示繁体字,也有可能是从0x0000 到0xFFFF区间表示繁体字。
因为编码的人只想编排自己地区所使用的字符,所以,在每个字节进行与字符对应的时候存在语言混淆的可能。

比如一个字简体的”国“和繁体的”國“,在gb2312中”国“字节编码是397A,在Big-5”國“是B0EA,那么这个简体的国如果不进行编码转换是无法从397A直接变成B0EA的,这个397A直接去对应Big-5的编码,就会是除了”國“字以外的其他繁体字了。那么gb2312的”国“用Big-5码显示出来就不是国对应的繁体字了。

所以就有了Unicode编码,它也叫统一编码。把全世界的语言字符拉通一一对应的编码。拉通就好比把全世界的字符通通从1开始数数 数一遍,并按数出来的数作为它的编码,这样就做到全世界的字符都是一 一对应的了。
那么繁体字,简体字,法文,俄文就不会有重叠的区域。这个时候“国”在unicode是 56EF表示,“國”是570B表示,如果生产者和用户都使用unicode编码,那么“国”和“國”就是因为使用的同一编码,生产者用unicode的56EF代表’国‘,用户用unicode翻译过来就是“国”;生产者用570B代表’國‘,用户用unicode翻译过来还是“國”,这就能编码和字符在生产者和用户上对应不变了。

在MFC中,ANSI字符集  所支持的就是多字节的也叫窄字节,类型来说就对应char类型。
Unicode字符集 也叫宽字符集 所支持的就是宽字符集,从类型上来说就是 wchar_t类型。
为了方便在不同的字符集上转换,就有了一种TCHAR类型,TCHAR能随着窄宽字节的变化自动变化。CString也是这样的。我们在定义CString的时候就需要使用的宏_T(“值”)或者TEXT(“值”)来表示文字了,这两个宏也是随编码不同,自动把里面的值转换成对应的编码。

区分一下 LPSTR(char*),LPCSTR(const char*)
     LPWSTR(wchar_t*),LPCWSTR(const wchar_t*)
     LPTSTR(TCHAR*),LPCTSTR(const TCHAR*)

 它们之间的转换转换:
https://blog.csdn.net/u012175637/article/details/80632687

MFC之多字节和宽字节的总结的更多相关文章

  1. windows下多字节和宽字节转换

    先简单说下什么是多字节和宽字节. 多字节是指使用多个字节(1-3)表示一个字符.比如gbk使用英文占一个字节,中文占2个,这个就是多字节了.utf-8是使用1-3个字节表示字符.还有big5等等. 宽 ...

  2. A2W和W2A :很好的多字节和宽字节字符串的转换宏

    以前看<Window核心编程>,感觉多字节和宽字节之间还比较麻烦的,至少MultiByteToWideChar函数和WideCharToMultiByte函数有足够多的参数的意义让我们去理 ...

  3. 关于多字节、宽字节、WideCharToMultiByte和MultiByteToWideChar函数的详解

    所谓的短字符,就是用8bit来表示的字符,典型的应用是ASCII码. 而宽字符,顾名思义,就是用16bit表示的字符,典型的有UNICODE. **************************** ...

  4. 使用Unicode(宽字节字符集);多字节字符集中定义宽字节变量

    2012-03-25 14:54 (分类:计算机程序) 2.2 宽字符和C 宽字符不一定是Unicode.Unicode是宽字符集的一种.然而,因为本书的焦点是Windows而不是C执行的理论,所以书 ...

  5. PHP函数 addslashes() 和 mysql_real_escape_string() 的区别 && SQL宽字节,绕过单引号注入攻击

    首先:不要使用 mysql_escape_string(),它已被弃用,请使用 mysql_real_escape_string() 代替它. mysql_real_escape_string() 和 ...

  6. 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 5.全局防护Bypass之宽字节注入

    0x01 背景 首先我们了解下宽字节注入,宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而导致的注入漏洞.具体原 ...

  7. Mysql宽字节注入(转)

    尽管现在呼吁所有的程序都使用unicode编码,所有的网站都使用utf-8编码,来一个统一的国际规范.但仍然有很多,包括国内及国外(特别是非英语国家)的一些cms,仍然使用着自己国家的一套编码,比如g ...

  8. 一文读懂所有的编码方式(UTF-8、GBK、Unicode、宽字节...)

    编码方式就分两类:ANSI编码.Unicode编码.这两类编码都兼容ASC码. ------------------------------------------------------------ ...

  9. sqli-libs(32-37(宽字节注入)关)

    补充知识:宽字节注入 定义:GB2312.GBK.GB18030.BIG5.Shift_JIS等这些都是常说的宽字节,实际上只有两字节.宽字节带来的安全问题主要是吃ASCII字符(一字节)的现象,即将 ...

  10. SQL注入--宽字节注入

    PHP测试代码: <?php // 面向对象写法 $id=addslashes($_GET[‘id’]); //获取id并转义预定义字符 // /$id=$_GET[‘id’]; $mysqli ...

随机推荐

  1. HarmonyOS:NativeWindow 开发指导

      场景介绍 NativeWindow是HarmonyOS本地平台化窗口,表示图形队列的生产者端.开发者可以通过NativeWindow接口进行申请和提交Buffer,配置Buffer属性信息. 针对 ...

  2. HarmonyOS振动效果开发指导

      Vibrator开发概述 振动器模块服务最大化开放硬工最新马达器件能力,通过拓展原生马达服务实现振动与交互融合设计,打造细腻精致的一体化振动体验和差异化体验,提升用户交互效率和易用性.提升用户体验 ...

  3. 将项目封装进docker进行迁移和使用

    首先要理解docker的基本使用,本文不做过多阐述,博主也对docker没有了解透彻. 这里列一下docker的基本命令: docker info # 查看docker信息 docker -v # 查 ...

  4. wandb一个简单demo

    wandb绘制曲线:sin函数,cos函数,log函数. wandb绘制本地图片 wandb绘制matplotlib图片 wandb绘制numpy图片 import math import wandb ...

  5. 【数学】向量点乘、叉乘的理论、应用及代码实现(C++)

    前言 我总结了一下向量点乘,叉乘的概念,以及他们的应用及相关C++代码的实现.blog 这类问题也是技术面试经常碰到的,一次研究透了会有收获. 1 向量 向量具有大小和方向. 共线向量:两个平行的向量 ...

  6. 力扣1(java&python)-两数之和(简单)

    题目: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案.但是, ...

  7. 云企业网CEN-TR打造企业级私有网络

    简介: 为了满足企业大规模.多样化的组网和网络管理需求,云企业网(CEN)提出了转发路由器TR(Transit Router)的概念.在每个地域内创建一个转发路由器,可以连接大量VPC.VBR,作为您 ...

  8. eBPF技术应用云原生网络实践系列之基于socket的service | 龙蜥技术

    ​简介:如何使用 socket eBPF进一步提升Service 网络的转发性能? ​ 背景介绍 Kubernetes 中的网络功能,主要包括 POD 网络,service 网络和网络策略组成.其中 ...

  9. 谈谈JVM内部锁升级过程

    简介: 对象在内存中的内存布局是什么样的?如何描述synchronized和ReentrantLock的底层实现和重入的底层原理?为什么AQS底层是CAS+volatile?锁的四种状态和锁升级过程应 ...

  10. [Gin] 运行模式检测和设置 (mode.go)

    // 设置方式 gin.SetMode(gin.ReleaseMode) // 检测方式 if gin.Mode() == gin.DebugMode { } 更多相关信息,建议直接去看源代码. Re ...