UNICODE字符集

Unicode :宽字节字符集
1. 如何取得一个既包含单字节字符又包含双字节字符的字符串的字符个数?
可以调用Microsoft Visual C++的运行期库包含函数_mbslen来操作多字节(既包括单字节也包括双字节)字符串。
调用strlen函数,无法真正了解字符串中究竟有多少字符,它只能告诉你到达结尾的0之前有多少个字节。
2. 如何对DBCS(双字节字符集)字符串进行操作?
函数 描述
PTSTR CharNext ( LPCTSTR ); 返回字符串中下一个字符的地址
PTSTR CharPrev ( LPCTSTR, LPCTSTR ); 返回字符串中上一个字符的地址
BOOL IsDBCSLeadByte( BYTE ); 如果该字节是DBCS字符的第一个字节,则返回非0值
3. 为什么要使用Unicode?
(1) 可以很容易地在不同语言之间进行数据交换。
(2) 使你能够分配支持所有语言的单个二进制.exe文件或DLL文件。
(3) 提高应用程序的运行效率。
Windows 2000是使用Unicode从头进行开发的,如果调用任何一个Windows函数并给它传递一个ANSI字符串,那么系统首先要将字符串转换成
Unicode,然后将Unicode字符串传递给操作系统。如果希望函数返回ANSI字符串,系统就会首先将Unicode字符串转换成ANSI字符串,然后将结
果返回给你的应用程序。进行这些字符串的转换需要占用系统的时间和内存。通过从头开始用Unicode来开发应用程序,就能够使你的应用程序
更加有效地运行。
Windows CE 本身就是使用Unicode的一种操作系统,完全不支持ANSI Windows函数
Windows 98 只支持ANSI,只能为ANSI开发应用程序。
Microsoft公司将COM从16位Windows转换成Win32时,公司决定需要字符串的所有COM接口方法都只能接受Unicode字符串。
4. 如何编写Unicode源代码?
Microsoft公司为Unicode设计了WindowsAPI,这样,可以尽量减少代码的影响。实际上,可以编写单个源代码文件,以便使用或者不使用
Unicode来对它进行编译。只需要定义两个宏(UNICODE和_UNICODE),就可以修改然后重新编译该源文件。
_UNICODE宏用于C运行期头文件,而UNICODE宏则用于Windows头文件。当编译源代码模块时,通常必须同时定义这两个宏。
5. Windows定义的Unicode数据类型有哪些?
数据类型 说明
WCHAR Unicode字符
PWSTR 指向Unicode字符串的指针
PCWSTR 指向一个恒定的Unicode字符串的指针
对应的ANSI数据类型为CHAR,LPSTR和LPCSTR。
ANSI/Unicode通用数据类型为TCHAR,PTSTR,LPCTSTR。
6. 如何对Unicode进行操作?
字符集 特性 实例
ANSI 操作函数以str开头 strcpy
Unicode 操作函数以wcs开头 wcscpy
MBCS 操作函数以_mbs开头 _mbscpy
ANSI/Unicode 操作函数以_tcs开头 _tcscpy(C运行期库)
ANSI/Unicode 操作函数以lstr开头 lstrcpy(Windows函数)
所有新的和未过时的函数在Windows2000中都同时拥有ANSI和Unicode两个版本。ANSI版本函数结尾以A表示;Unicode版本函数结尾以W表示。
Windows会如下定义:
#ifdef UNICODE
#define CreateWindowEx CreateWindowExW
#else
#define CreateWindowEx CreateWindowExA
#endif // !UNICODE
7. 如何表示Unicode字符串常量?
字符集 实例
ANSI “string”
Unicode L“string”
ANSI/Unicode T(“string”)或_TEXT(“string”)if( szError[0] == _TEXT(‘J’) ){ }
8. 为什么应当尽量使用操作系统函数?
这将有助于稍稍提高应用程序的运行性能,因为操作系统字符串函数常常被大型应用程序比如操作系统的外壳进程Explorer.exe所使用。由于
这些函数使用得很多,因此,在应用程序运行时,它们可能已经被装入RAM。
如:StrCat,StrChr,StrCmp和StrCpy等。
9. 如何编写符合ANSI和Unicode的应用程序?
(1) 将文本串视为字符数组,而不是chars数组或字节数组。
(2) 将通用数据类型(如TCHAR和PTSTR)用于文本字符和字符串。
(3) 将显式数据类型(如BYTE和PBYTE)用于字节、字节指针和数据缓存。
(4) 将TEXT宏用于原义字符和字符串。
(5) 执行全局性替换(例如用PTSTR替换PSTR)。
(6) 修改字符串运算问题。例如函数通常希望在字符中传递一个缓存的大小,而不是字节。这意味着不应该传递sizeof(szBuffer),而应该传
递(sizeof(szBuffer)/sizeof(TCHAR)。另外,如果需要为字符串分配一个内存块,并且拥有该字符串中的字符数目,那么请记住要按字节来
分配内存。这就是说,应该调用malloc(nCharacters *sizeof(TCHAR)),而不是调用malloc(nCharacters)。
10. 如何对字符串进行有选择的比较?
通过调用CompareString来实现。
标志 含义
NORM_IGNORECASE 忽略字母的大小写
NORM_IGNOREKANATYPE 不区分平假名与片假名字符
NORM_IGNORENONSPACE 忽略无间隔字符
NORM_IGNORESYMBOLS 忽略符号
NORM_IGNOREWIDTH 不区分单字节字符与作为双字节字符的同一个字符
SORT_STRINGSORT 将标点符号作为普通符号来处理
11. 如何判断一个文本文件是ANSI还是Unicode?
判断如果文本文件的开头两个字节是0xFF和0xFE,那么就是Unicode,否则是ANSI。
12. 如何判断一段字符串是ANSI还是Unicode?
用IsTextUnicode进行判断。IsTextUnicode使用一系列统计方法和定性方法,以便猜测缓存的内容。由于这不是一种确切的科学方法,因此
IsTextUnicode有可能返回不正确的结果。
13. 如何在Unicode与ANSI之间转换字符串?
Windows函数MultiByteToWideChar用于将多字节字符串转换成宽字符串;函数WideCharToMultiByte将宽字符串转换成等价的多字节字符串。

回复人: xtky_limi(痛在心中笑在脸上) (2001-12-22 0:35:58) 得0分
上面说的已经比较全了。
回复人: xtky_limi(痛在心中笑在脸上) (2001-12-22 0:38:13) 得0分
TEXT是宏
相当于L##

它可以根据编译环境确定为DBMS,还是UNICODE字符集

转载于:https://www.cnblogs.com/kevinzhwl/archive/2009/12/01/3878981.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/411204.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学生党的Surface Pro 5乞丐版使用体验

因为已经装了台式机,大一开学时买的厚重且续航差的华硕游戏本(i5GTX950M8G)对我这个考研党已经显得不合适了。恰巧有一同学笔记本坏了,我便将游戏本低价出了,然后用两三倍的价格,入手了surface pro5 (new surface)的最…

2018计算机河北省高考试题,2018年河北高考物理压轴试题【含答案】

2018年河北高考物理压轴试题【含答案】18.如图4所示,由粗细均匀的电阻丝制成的边长为L的正方形金属框向右匀速运动,穿过方向垂直金属框平面向里的有界匀强磁场,磁场宽度d2L。从ab边刚进入磁场到金属框全部穿出磁场的过程中&#x…

[html] 为什么说cookie不可以滥用?

[html] 为什么说cookie不可以滥用? 1.安全问题 2.每次请求都会携带cookie,占内存,影响带宽 3.不能跨域 4.可储存的内容少个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目…

富士通01018z平板电脑评测_档案扫描好帮手,富士通ix1500无线双面高速扫描仪评测...

扫描仪是办公中常用的一种设备,尤其是建立了较为完备的档案管理制度的企业和组织,经常需要扫描和存档大量的文稿和图像,下文就介绍一台获得日本Good Design设计奖的无线高速扫描仪——富士通ScanSnap iX1500。打开包装可以看到ScanSnap iX150…

鼠标搭上显示背景色

原来帮一小朋友写的简单的应用&#xff0c;没有什么技术含量&#xff0c;只是做一学习过程的记录。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns&q…

《JAVA核心技术》

java 开发环境搭建 第3章 java的基本程序设计结构转载于:https://www.cnblogs.com/rivsidn/p/10976712.html

计算机教案评比,信息技术课堂教学评比案例——多媒体作品合成;

让多媒体作品合成插上魔术的翅膀----《多媒体作品合成》教学案例普陀中学柯林一、教材分析教学内容为教科社版、普通高中课程标准实验教材《多媒体技术应用》(必修)第4章《作品的合成与提交》第2节《多媒体作品的合成》。本节旨在进一步培养和提升学生利用多媒体软件合成多媒体…

[html] 一个标签上同时出现三个或多个class属性,请问它的渲染顺序是怎样的?

[html] 一个标签上同时出现三个或多个class属性&#xff0c;请问它的渲染顺序是怎样的&#xff1f; 按照css定义的顺序从前往后渲染&#xff0c;后定义的同类属性覆盖前面定义的。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持…

工厂模式 + 反射 ?= 灵活多变的数据库

工厂模式 反射 ? 灵活多变的数据库么 由于现实项目中我们难保会客户会更换系统的数据库&#xff0c;这样我们需要把若干数据库各种情况基本上都想到。多种数据库&#xff0c;引出抽象&#xff0c;我们就能在众多数据库的上层抽出一个Factory&#xff0c;由Factory去引导具体…

中使用swiper不能自动切换_液晶拼接墙显示系统中矩阵切换器使用的注意事项

近年来在液晶拼接墙显示系统中矩阵切换器的使用已变得越来越普遍、这主要是因为各矩阵切换器品牌商根据众多用户的实际需求对矩阵进行了同能扩展与完善。这也使得矩阵切换器除了使用在大屏拼接显示系统外还适用于多媒体会议系统、调度指挥系统、数字化城市建设、安防等工程。而…

Log4j的使用说明

Log4j基本使用方法 Log4j由三个重要的组件构成&#xff1a;日志信息的优先级&#xff0c;日志信息的输出目的地&#xff0c;日志信息的输出格式。日志信息的优先级从高到低有ERROR、WARN、 INFO、DEBUG&#xff0c;分别用来指定这条日志信息的重要程度&#xff1b;日志信息的输…

计算机的双一流学校,分数不够上双一流大学计算机专业,上这些大学也不错,实力非常强...

有句话说“穷人就学计算机”&#xff0c;为什么会有这种说法呢&#xff1f;学计算机是穷人翻身最快的途径&#xff1f;的确&#xff0c;因为计算机是一项可以不靠人脉、不需要过高的口才的技术性工作。对于穷人来说&#xff0c;无背景无社会资源&#xff0c;只能靠自己&#xf…

[html] 要减少DOM的数量有什么办法吗?

[html] 要减少DOM的数量有什么办法吗&#xff1f; 类似长列表的话可以只渲染可视区域的DOM元素&#xff08;比如10个&#xff09;&#xff0c;上面用空的DIV或者padding撑开阴影效果、清除浮动等的使用伪元素操作列表等大量的DOM元素&#xff0c;可以创建文档片段节点(Fragment…

python怎么输出表格中随机数_python 输出一个随机数

优化MySchool数据库(四)关于“无法附件数据库”过程的遇到的问题: 1.数据文件本身,具有访问权限的限制 ---- 选中 数据库文件所在的文件夹---->右键菜单(属性)----> 安全 --->User用户 ...Reason we use CamelCamel is mainly for integration purpose, in our projec…

计算机操作系统中程序的功能是,计算机操作系统的功能和分类研究

摘 要&#xff1a;计算机操作系统是一种系统的体系&#xff0c;是计算机运行的核心&#xff0c;同时它精确的掌管着计算机软件&#xff0c;资源硬件&#xff0c;精确的管理着计算机的各项工作&#xff0c;组织计算机工作的各个重要的流程。随着时代的发展和科技的日新月异&…

Jupyter Notebook 使用小记

简介 Jupyter Notebook 是一款几乎综合所有编程语言&#xff0c;能够把软件代码、计算输出、解释文档、多媒体资源整合在一起的多功能科学计算平台。具有如下优点&#xff1a; 整合所有资源交互性编程体验零成本重现结果安装 本地安装 # python3 python3 -m pip install --upgr…

陕西省高级职称 计算机要求,陕西省卫生高级职称评审申报条件

陕西省卫生高级职称评审申报条件2014年-2015年陕西省卫生高级职称评审申报条件我所经历的陕西省卫生高级职称评审经验谈 贴上一个目前陕西省最权威的晋升高级职称的文件&#xff0c;重点看最后一段我的个人经验。(二)学历资历条件&#xff1a;1、晋升正高级资格&#xff0c;必须…

常微分方程

本书主要介绍了常微分方程的初等解法、基本理论和稳定性理论初步。具体包括&#xff1a;常微分方程的初等解法、线性常微分方程组、高阶常系数线性方程、常微分方程的幂级数解法、常微分方程基本理论、常微分方程定性理论初步和一阶偏微分方程。 本书在编写中注重开拓读者思路&…

Django第二篇

django第二篇 1.静态文件配置 接口前缀&#xff1a; ​ STATIC_URL /static/ 跟静态文件夹的名字没有关系&#xff0c;默认情况下这个前缀跟静态文件夹名字一样 文件配置 STATICFILES_DIRS [ ​ os.path.join(BASE_DIR,static) ] static:就是你的静态文件夹路径&#xff0c;可…