找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 329|回复: 1

[图文教程] 炫语言之玩转字符串003-宽窄字节字符串的转换

[复制链接]

49

主题

49

回帖

406

积分

超级版主

积分
406
发表于 2024-5-18 14:33:35 | 显示全部楼层 |阅读模式
1、为什么要进行转换?
既然宽窄字节字符串各自的基本使用都给大家讲解完了,那么本节课开始呢,就给大家讲解下如何进行宽窄字节字符串的转换。
之前跟大家说过,并不是建议程序中所有的字符串都用宽字节的Unicode来表示,比如网络发送的字符串就可以用窄字节的,当对方收到之后默认收到的是窄字节的,因为对方的程序可能用宽字节Unicode来写的界面,所以要显示的时候就要转换成Unicode宽字节的字符串。这样就涉及到宽窄字节的转换,类似的情况很常见,所以本节课重点讲解下

2、使用微软提供的API函数来实现宽窄字节的转换:
WideCharToMultiByte 实现宽字节转换到窄字节
MultiByteToWideChar 实现窄字节转换到宽字节

WideCharToMultiByte 的代码页用来标记与新转换的字符串相关的代码页;
MultiByteToWideChar 的代码页用来标记与一个多字节字符串相关的代码页,

[1]、常用的代码页有 CP_ACP 和 CP_UTF8 两个:
使用 CP_ACP 代码页就实现了 ANSI 与 Unicode 之间的转换;--- 我们所用的!
使用 CP_UTF8 代码页就实现了 UTF-8 与 Unicode 之间的转换,在网页中经常会用到UTF8编码的格式。
[2]、dwFlags 参数允许我们进行额外的控制,但是,一般情况下都不使用这个标志,直接传递 0 就行了。
[3]、lpDefaultChar和pfUsedDefaultChar:只有当WideCharToMultiByte函数遇到一个宽字节字符,而该字符在uCodePage参数标识的代码页中并没有它的表示法时,WideCharToMultiByte函数才使用这两个参数。如果宽字节字符不能被转换,该函数便使用lpDefaultChar参数指向的字符。如果该参数是NULL(这是大多数情况下的参数值),那么该函数使用系统的默认字符。该默认字符通常是个问号。这对于文件名来说是危险的,因为问号是个通配符。pfUsedDefaultChar参数指向一个布尔变量,如果Unicode字符串中至少有一个字符不能转换成等价多字节字符,那么函数就将该变量置为TRUE。如果所有字符均被成功地转换,那么该函数就将该变量置为FALSE。当函数返回以便检查宽字节字符串是否被成功地转换后,可以测试该变量。

注意:使用过后千万别忘记释放返回的指针空间。
这里炫语言已经帮我们封装好了,新手直接使用就好
文本型  A2W_(常量 字符型A* Ansi文本, 整型 长度 = -1)//将Ansi转成Unicode
文本型A  W2A_(常量 字符型* Unicode文本指针, 整型 长度 = -1)//将Unicode转成Ansi


32

主题

142

回帖

730

积分

高级会员

积分
730
发表于 2024-5-19 21:20:05 | 显示全部楼层
又长知识了.话说:这验证码要多少级才可以.免码回复呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|炫语言 | 炫彩界面库 | 用户所需, 正是我所做! ( 鄂ICP备2023014763号-1 )

GMT+8, 2024-11-21 18:44 , Processed in 0.068410 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表