windows API编程之一----MBCS与Unicode码制分析

C# Windows API字符串处理:8大字符集陷阱+3种解决方案,如何避免乱码? 🔥关注墨瑾轩,带你探索编程的奥秘!🚀🔥超萌技术攻略,轻松晋级编程高手🚀🔥技术宝库已备好,就等你来挖掘🚀🔥订阅墨瑾轩,智趣学习不孤单🚀🔥即刻启航,编程之旅更有趣🚀。 阅读详情

本文并不打算讲解Unicode的编码问题,因为本文主要对以下几个问题提一些见解:
1. MBCS多字节码的原理?
2. MBCS与Unicode的关系?
3. MBCS与Unicode的转换?
4. MBCS与Unicode的打印,乱码解决?

1:

早在Windows采用Unicode统一编码进行语言管理之前,Windows为了能够进行非ANSI标准字符的输出,于是采用两个字节来表示这些语言文字。因为这些双字节文字和ANSI是混和在一起的,为了加以区别,Windows将这些字符的最高位置为1(即这些双字节文字的每个字节都>=127),所以这种表示法可以表示 127x127 约一万多种非ANSI文字,其本上可以表示任何一种语言的常用文字了。于是,Windows为每一个区域版本,都制定了分别独立的文字编码,这就是MBCS(多字节码)。

 

2: 

在采用Unicode之后,Windows仍然保留了MBCS技术,只不过它对每一种MBCS与Unicode建立了一种映射关系,当然这是通过Unicode的语言区域码实现的。windows对每个语言区域进行编号,并记录其范围。这样,只要给定这些区域编号,就可以实现任何MBCS与Unicode的转换。

 

3:

通过windows的Api函数

 

1》完成Unicode到MBCS的转换

int WideCharToMultiByte(
UINT CodePage,    
DWORD dwFlags,
LPCWSTR lpWideCharStr,    //宽字符指针
int cchWideChar,                
LPSTR lpMultiByteStr,
int cbMultiByte,
LPCSTR lpDefaultChar,
LPBOOL lpUsedDefaultChar );

2>完成MBCS到Unicode的转换

int MultiByteToWideChar(
UINT CodePage,
DWORD dwFlags,
LPCSTR lpMultiByteStr,
int cbMultiByte,
LPWSTR lpWideCharStr,
int cchWideChar );

注意:

MBCS ASCII等求字节长度使用strlen(str)

求Unicode字符个数使用wcslen(str)

Unicode与UTF-8编码详解:从乱码根源到多语言开发实战 字符编码是计算机处理文本信息的基础,它定义了字符与二进制数字之间的映射关系。其核心原理在于为每个字符分配唯一的数字标识,以实现跨平台、跨语言的数据交换与显示一致性。这一技术的核心价值在于彻底解决了早期因编码标准不统一导致的乱码问题,为全球化的软件开发和互联网应用奠定了基石。在实际应用场景中,尤其在Web开发、多语言软件和数据处理领域,统一的字符编码标准至关重要。本文聚焦于Unicode这一全球通用的字符集标准及其主流编码方案UTF-8,深入剖析码点、平面等核心概念,并针对网页乱码、PHP/C++/VB等语言 阅读详情

相关推荐

STM32H750实战:用TIM+DMA驱动ADC/DAC实现音频回环(附CubeMX配置避坑指南)

本文详细介绍了在STM32H750上构建高保真、低延迟音频链路的实战方法。通过配置TIM定时器作为硬件节拍器,精准触发ADC采集与DAC播放,并利用DMA实现数据的自动搬运,全程无需CPU干预。文章重点剖析了CubeMX配置中的关键步骤与常见“坑点”,如ADC的Conversion Data Management模式选择、DMA的FIFO与Burst模式配置,以及STM32H7系列必须开启ADC全局中断等,并提供了完整的代码实现与调试验证指南。

1057

[编码] Unicode/MBCS 基础知识

MBCS/Unicode 的基础知识

zlllc的博客 1334

离线AI实战指南:本地部署大模型处理PDF/Word/Excel

离线AI是指在无网络、不上传数据前提下,于个人设备运行大语言模型并完成文档理解、多轮对话与代码辅助等任务的技术方案。其核心依赖本地模型推理、文档解析向量化和轻量级对话调度三大能力。随着Phi-3、Qwen2、Llama3等轻量化开源模型普及,以及Ollama、LM Studio等易用工具成熟,普通用户已可在主流笔记本上实现PDF摘要、合同比对、代码注释等真实办公场景。本文聚焦离线AI的硬件适配、模型选型、文件处理链路与知识库构建,尤其强调中文OCR支持、结构化文档提取与CPU/GPU混合推理优化,助力非开发

weixin_31968639的博客 489

MBCS与UNICODE互转换

MBCS->UNICODE std::string str("hello"); std::wstring wstr(str.length(), L" "); //wstr.resize(str.length()); std::copy(str.begin(), str.end(), wstr.begin()); UNICODE->MBCS std::string w

asdfind的专栏 612

Unipush2.0 App消息推送(在线+离线推送)

使用unipush2.0进行消息推送,包含在线跟离线

weixin_50251467的博客 3693

【KDD2024】ShapeFormer:用于多元时间序列分类的Shapelet Transformer

多元时间序列分类(MTSC)因其在现实世界中的广泛应用而吸引了大量研究关注。最近,Transformer在MTSC中取得了先进的性能。然而,

m0_52597077的博客 4738

Windows API 核心DLL

Windows API,即Windows应用程序接口,是微软Windows操作系统提供的一组功能强大的函数、宏、数据类型和数据结构的集合。它为运行在Windows系统上的应用程序提供了与操作系统交互的桥梁,使得开发者能够借助这些接口实现各种复杂的功能,从而构建出丰富多彩的应用程序。Windows API涵盖了众多领域,从基本的文件操作、内存管理,到复杂的进程间通信、图形用户界面设计等,几乎涵盖了应用程序开发所需的所有功能。这些API函数不仅易于使用,而且性能卓越,能够充分发挥Windows操作系统的优势。

王牌飞行员_里海的博客 1088

Python爬虫教程:抓取地方政府网站的公开文件与政策信息

Web爬虫是指一种自动化脚本,用于模拟人类浏览器访问网页、提取网页内容的数据抓取工具。发送请求到目标网页;获取网页内容;解析网页内容,提取所需数据;将数据保存或进一步处理。爬虫可以抓取各种形式的数据,如文本、图片、文件等。本教程将重点展示如何抓取地方政府网站上公开的政策文件、公告等信息。许多政府网站都会采取一定的反爬虫措施,防止大量数据被爬取。IP封锁:如果短时间内大量请求来自同一IP,可能会被封锁。验证码:一些网站会使用验证码来验证访问者是否为机器人。动态加载。

2201_76125261的博客 1980

MBCS与Unicode的转换

Unicode 转MBCS 使用WideCharToMultiByte // 假设已经有了一个Unicode 串 wszSomeString... char szANSIString [MAX_PATH]; WideCharToMultiByte ( CP_ACP, WC_COMPOSITECHECK, wszSomeString, -1, szANSIString, sizeof(szANSI

唐装鼠的主页 733

最新Python爬虫实战(入门爬虫篇)——案例13:某乎热榜数据采集(详细爬虫思路截图+抓包动图演示+完整爬虫代码+详细注释)

本次案例通过Python爬虫技术,成功实现了基于Cookies认证的某乎热榜数据爬取与Excel保存。代码采用模块化设计,包含Cookies解析、HTML请求、结构化解析、Excel持久化等完整流程;通过配置浏览器请求头+Cookies认证,有效突破某乎基础反爬策略,保证请求稳定性。整个爬虫逻辑遵循“Cookies认证 → 页面请求 → HTML解析 → 数据清洗 → 保存到Excel”的标准流程,与需要会话验证的网站爬取范式高度一致。Cookies解析与认证。

努力让自己发光,对的人才能迎着光而来 33万+

OTFS 消息传递算法信号检测【附matlab代码详解】

OTFS 消息传递算法方面的一些浅浅理解。

Cuby的博客 4008

字符集选择指南-ANSI-Unicode-MBCS

此文章主要介绍了常用的几种编码字符集,适配项目的一些建议,因为编码字符集的问题一直都是比较头疼的一件事,希望这篇文章能帮到你

qq_56673429的博客 785

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

VS2022,编写C/C++时没有与参数列表匹配的重载函数实例

E0304

lxyhhhhhcl的博客 1万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Unicode下CString与整型之间的转换

MFC中对字符串的定义大多是使用CString类,不可避免的有时候需要将CString类型的字符串转换为整形或者其他类型的变量。最近在做的一个项目中就遇到了这样的问题。 用CString定义了一个由数字组成的字符串str,但是需要将其转换为BYTE型使用。很容易就想到了atoi函数,atoi函数主要功能是将一个字符串转化为整型数,函数原型如下: [code]int atoi(const cha

leckey 2418

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

攻克C++ Unicode编程痛点:从字符编码到跨平台实践指南

你是否还在为C++项目中的中文乱码焦头烂额?是否在宽字符与多字节字符串的转换中迷失方向?本文将系统解决Unicode编程的9大核心难题,提供从基础编码到高级IO的全流程解决方案,助你彻底掌握国际化应用开发精髓。 读完本文你将获得: - Unicode与MBCS的技术选型决策框架 - `CString`与标准库字符串的无缝转换技巧 - 跨平台字符编码处理的兼容方案 - 文件IO中的编码陷阱...

gitblog_01012的博客 606

理解Windows编程中的TCHAR与INI文件操作

TCHAR是Windows平台在ANSI到Unicode过渡期间设计的编译时适配技术,实现了源代码级兼容。虽然在新项目中不建议使用,但理解其原理对维护旧代码至关重要。INI文件操作函数如和提供了简单易用的配置管理方式,适合中小型项目的配置管理需求。通过合理使用这些功能,可以编写出更加健壮和可维护的Windows应用程序。注意:本文涉及的技术主要适用于Windows平台开发,跨平台项目应考虑使用其他配置管理方案,如XML、JSON或专门的配置库。

码事漫谈 982

Windows字符编码那些事儿

1. visual studio项目中的Character Set设置  vs里的cs设置有三种,NS,Unicode,MBCS,后两种皆是显示设置编译条件,即是向Command Line中添加UNICODE和_UNICODE宏、  _MBCS宏,而当采用NS的设置时,以下两种写法便出现了差异: #ifdef UNICODE#define myPrint myPrintW#elif

MagicxiaoZ的专栏 4283

谈谈Windows程序中的字符编码

谈谈Windows程序中的字符编码<br />写这篇文章的起因是这么一个问题:我们在使用和安装Windows程序时,有时会看到以“2052”、“1033”这些数字为名的文件夹,这些数字似乎和字符集有关,但它们究竟是什么意思呢?<br />研究这个问题的同时,又会遇到其它问题。我们会谈到Windows的内部架构、Win32 API的A/W函数、Locale、ANSI代码页、与字符编码有关的编译参数、MBCS和Unicode程序、资源和乱码等,一起经历这段琐碎细节为主,间或乐趣点缀的旅程。 0 Where i

hyhhotmail的专栏 275

揭开字符的面纱(二)

上面一节提到了字符的表示方式,这一节主要讲他们的由来以及微软给出的解决方案。 在《Windows核心编程中》有提到,从Windows NT开始,Windows的所有版本都完全用Unicode来构建。这个意思就是说,即使你用的是ASCII字符或者ASCII字符串(一个字符一个字节),都将在内部转换成Unicode字符。**在大部分的Windows的API中都有xxxxxxA、xxxxxxW以及xxx...

努力学习 303

windows控制台程序——关于UNICODE字符的总结(转)

前言:从Windows NT/2000开如,Windows系统已经是一个标准的UNICODE系统,系统内部所有字符串存储及操作均使用UNICODE编码。因此Win32 API都是UNICODE版本的,但为了更好的本地化支持,也提供了MBCS(ANSI)版的Win32 API。UNICODE版Win32 API形式为xxxW,W(Wide)代表宽字符;MBCS(ANSI)版Win32 API形式为x...

weixin_34259159的博客 436

Windows API 函数

《Windows API函数手册》摘要 本文档是Windows平台开发的权威参考手册,全面收录774个核心API函数,涵盖系统管理、进程线程、窗口消息、文件操作、图形处理等12大功能模块。手册采用结构化编排,主要特点包括: 编码规范 详细区分多字节(char)与宽字符(wchar_t)编码体系 提供LPSTR/LPCWSTR等字符串指针类型的完整解析 说明UTF-8与GBK编码转换的实际应用场景 核心功能模块 窗口创建:完整展示从注册类到消息循环的窗口生命周期 文件操作:覆盖CreateFile/ReadF

gqk01的博客 861

VC++ INI配置文件封装类:简化Windows平台配置管理的C++实践

在Windows平台的C++开发中,配置文件管理是基础且关键的环节。INI文件作为一种轻量级、人类可读的配置格式,凭借其结构简单、易于编辑的特点,在遗留系统维护和桌面应用中仍有广泛应用。其核心原理基于节(Section)、键(Key)和值(Value)的层级结构,通过系统API进行读写。然而,直接使用Windows API(如GetPrivateProfileString)存在接口繁琐、类型不安全、缓冲区管理复杂等问题,降低了开发效率与代码健壮性。封装类的技术价值在于通过面向对象设计,抽象出简洁的类型安全接

dianchamian8747的博客 349

《windows程序设计(第五版)》——第2章VC++的Unicode编程

一 添加LIB 文件(否则出现出现错误 ) 或者重新安装VC6。0 二 VC6。0设置 2步骤使用VC++ 6.0进行Unicode编程主要做以下几项工作:1、为工程添加UNICODE和_UNICODE预处理选项。   具体步骤:打开[工程]->[设置…]对话框,如图1所示,在C/C++标签对话框的“预处理程序定义”中去除_MBCS,加上_UNICODE,UNICODE。(注意中间用逗号隔开)改动后如图2:图一图二  在没有定义UNICODE和_UNICODE时,所有函数和类型都默认使用ANSI的版本;在定

845
上一篇: 经典SQL语句大全
下一篇: windows API编程之二----控制台模拟Win32程序
cmdhack
博客等级 码龄19年 20粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值