UNICODE字符串

Posted 番茄玛丽

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UNICODE字符串相关的知识,希望对你有一定的参考价值。

参考微软在线文档有关“通用数据类型和数据类型”的章节

单字节字符集:ASCII      缺点:只能显示现代美国英语(基本拉丁字母、阿拉伯数字、英式标点)

双字节字符集:GB2312  ASCII基础上,127号之前保留,两个127号之后的字符连在一起就表示一个汉字

多字节字符集:Unicode  收录了地球上所有的字符,字符集和编码方式是分开的。

  编码方式:UTF-8  最大4字节 头字节首字符为0,跟ASCII相同;为1,多字节表示。

           UTF-16 16位无符号整数为单位

Windows提供3种关于字符操作的API:

  • 宏定义,兼容UNICODE和非UNICODE
    • VC++:_t的是unicode版本,不带_t的是单字节版本
    • _tcslen
    • 在代码中,凡是用关键字 char  的地方都用 TCHAR 取代;凡是用 char * 的地方都用 LPTSTR 取代;凡是定义在双引号中的字符串常量(如"VCKBASE Online Journal")都用 TEXT 宏重写:
  • 以A结尾的非UNICODE版API
  • 以W结尾的UNICODE版API

 

标准的C语言库函数处理字符串时都是ASCII编码,因此用标C函数处理多字节字符编码就存在问题

Windows函数 标准C函数
lstrcat strcat
lstrcmp strcmp
lstrcpy strcpy
lstrlen strlen
lstrcmpi cyrcmpi

1.计算字符串长度

strlen是计算字符串长度的,它是针对ANSI字符串的,对于UNICODE字符串,计算长度用wcslen来计算。
而_tcslen则是一个宏,当定义了_UNICODE时,它被解释为wcslen,如果没有定义_UNICODE时,它被解释为strlen。

 

 

以上是关于UNICODE字符串的主要内容,如果未能解决你的问题,请参考以下文章

C#学习笔记——需要注意的基础知识

从其代码中获取 unicode 字符串 - C#

如何修改 unicode 代码,因为它是一个字符串

如何将 Unicode 字符转换为十六进制格式的 Unicode 代码点?

PDO 查询返回许多我无法转换为 unicode 字符的 \uXXXX 字符代码

如何在 PowerShell 字符串文字中编码 Unicode 字符代码?