当前位置: 首页 > wzjs >正文

非标自动化东莞网站建设单位如何建设网站

非标自动化东莞网站建设,单位如何建设网站,教育行业网站制作,无货源网店哪个平台好提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、windows常用字符出处理函数?二、测试代码总结 前言 提示:这里可以添加本文要记录的大概内容: Windows编程中主要使用两…

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、windows常用字符出处理函数?
  • 二、测试代码
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

Windows编程中主要使用两种字符串类型:ANSI字符串(char)和Unicode字符串(wchar_t)。ANSI字符串使用单字节编码,而Unicode字符串使用双字节编码(UTF-16)。为了编写跨平台的代码,Windows提供了TCHAR类型,它可以根据编译设置自动转换为char或wchar_t。CRT库中提供了对应的处理函数,如strlen和wcslen分别用于处理ANSI和Unicode字符串。


提示:以下是本篇文章正文内容,下面案例可供参考

一、windows常用字符出处理函数?

Windows提供了丰富的字符串处理函数,包括安全字符串函数(如RtlStringCbPrintfW)和通用函数宏(如_tcslen)。这些函数可以处理不同编码的字符串,并确保操作的安全性。TCHAR.H头文件中定义了一系列宏,如__T宏用于字符串字面量的编码转换,_tcslen会根据_UNICODE定义自动选择strlen或wcslen。

常用:
_T() //自动转换为char或wchar_t
strlen
wsclen
_tsclen
WideCharToMultiByte //宽转窄
MultiByteToWideChar//窄转宽

WideCharToMultiByte
功能:将宽字符字符串(UTF-16)转换为多字节字符串(ANSI/UTF-8等)。
函数原型:
int WideCharToMultiByte(
UINT CodePage, // 目标代码页(如 CP_ACP、CP_UTF8)
DWORD dwFlags, // 转换标志(通常设为 0)
LPCWSTR lpWideCharStr, // 输入的宽字符字符串
int cchWideChar, // 输入字符串的字符数(-1 表示自动计算)
LPSTR lpMultiByteStr, // 输出的多字节缓冲区
int cbMultiByte, // 输出缓冲区的字节数(若为 0,则返回所需缓冲区大小)
LPCSTR lpDefaultChar, // 无法转换时的替代字符(通常设为 NULL)
LPBOOL lpUsedDefaultChar // 是否使用了替代字符(可设为 NULL)
);
典型用途:

将 wchar_t* 转换为 char*,例如保存为 UTF-8 文件或兼容旧版 ANSI API。
处理需要兼容非 Unicode 环境的场景。

MultiByteToWideChar
功能:将多字节字符串(ANSI/UTF-8等)转换为宽字符字符串(UTF-16)。
函数原型:
int MultiByteToWideChar(
UINT CodePage, // 代码页(如 CP_ACP 表示当前 ANSI 代码页,CP_UTF8 表示 UTF-8)
DWORD dwFlags, // 转换标志(通常设为 0)
LPCSTR lpMultiByteStr,// 输入的多字节字符串
int cbMultiByte, // 输入字符串的字节长度(-1 表示自动计算到 NULL 终止符)
LPWSTR lpWideCharStr, // 输出的宽字符缓冲区
int cchWideChar // 输出缓冲区的字符数(若为 0,则返回所需缓冲区大小)
);
典型用途:

将 char*(ANSI 或 UTF-8)转换为 wchar_t*(UTF-16)。
处理来自文件或网络的 UTF-8 数据时转换为 Windows 原生 Unicode 格式。

二、测试代码

打印中文8位和16位字符串

#include <Windows.h>
#include <iostream>
#include <tchar.h>
#include <stdio.h>void print_bin(void* p, int len)
{int i = 0;for (i = 0; i < len; i++){if (i % 16 == 0){printf("\n");}printf("%2x ", ((unsigned char*)p)[i]);}
}int main()
{CHAR char_buff[] = "你好";WCHAR wchar_buff[] = L"你好";TCHAR tchar_buff[] = _T("你好");printf("char_buff = %lld\n", sizeof(char_buff));printf("wchar_buff = %lld\n", sizeof(wchar_buff));printf("tchar_buff = %lld\n", sizeof(tchar_buff));printf("len char_buff = %lld\n", strlen(char_buff));printf("len wchar_buff = %lld\n", wcslen(wchar_buff));printf("len tchar_buff = %lld\n", _tcslen(tchar_buff));print_bin(&char_buff, sizeof(char_buff));print_bin(&wchar_buff, sizeof(wchar_buff));print_bin(&tchar_buff, sizeof(tchar_buff));std::cout << "Hello World!\n";
}

调用堆栈

ConsoleApplication2.exe!main() 行 40 C++
ConsoleApplication2.exe!invoke_main() 行 79 C++
ConsoleApplication2.exe!__scrt_common_main_seh() 行 288 C++
ConsoleApplication2.exe!__scrt_common_main() 行 331 C++
ConsoleApplication2.exe!mainCRTStartup(void * __formal) 行 17 C++
kernel32.dll!00007ff8ce03e8d7() 未知
ntdll.dll!00007ff8cf8914fc() 未知

1,GBK编码(char_buff) c4 e3 ba c3 0 表示:
c4 e3 = "你"的GBK编码
ba c3 = "好"的GBK编码
0 = 字符串结束符 GBK编码中每个中文字符占用2个字节,所以"你好"共4字节,加上结束符共5字节。

2,UTF-16LE编码(wchar_buff) 60 4f 7d 59 0 0 表示:
60 4f = "你"的Unicode码点U+4F60的小端表示
7d 59 = "好"的Unicode码点U+597D的小端表示
0 0 = 宽字符串结束符 UTF-16LE中每个字符占2字节,所以"你好"共4字节,加上结束符共6字节。
在这里插入图片描述
GBK是传统的ANSI编码扩展,而UTF-16LE则是现代Unicode编码的标准实现。

GBK编码详解
GBK编码是中国国家标准GB 2312-80的扩展,全称为《汉字内码扩展规范》。它具有以下特点:

双字节编码:每个中文字符占用2个字节,英文字符保持1个字节
兼容性:完全兼容GB 2312标准,同时支持繁体中文和日韩汉字
编码范围:高字节在0x81-0xFE,低字节在0x40-0xFE
典型应用:传统Windows应用程序、简体中文版操作系统默认ANSI编码
GBK编码的优势在于存储效率高,对简体中文支持完善,但缺点是不支持国际化多语言环境。

UTF-16LE编码详解
UTF-16LE是Unicode标准的实现方式之一,特点包括:

固定长度:大多数字符(包括中文)使用2个字节表示
完整支持:可表示Unicode标准中的所有字符(包括补充字符使用4字节)
小端序:低字节在前,高字节在后
Windows原生支持:Windows API内部使用UTF-16LE作为原生字符串格式
UTF-16LE的优势在于完美支持多语言环境,且是Windows系统内核的本地编码格式。


总结

介绍了windows下字符串存储方式,8位和16位,以及常用的中文编码方式GBK和utf16le

http://www.dtcms.com/wzjs/833365.html

相关文章:

  • 做团膳有哪些网站山东富泰建设工程有限公司网站
  • 网站改版怎么办杭州建设招聘信息网站
  • 上海企炬做的网站一级消防工程师考试题型
  • 什么是网站快照WordPress如何加代码
  • 3g版网站制作wordpress如何设置商城
  • 网站建设方案书 内容管理制度电商货源网站大全
  • 2021网站你懂我意思正能量郑州最新情况
  • 力洋网站建设公司商业网站开发
  • 怎么免费建设自己网站今天东莞封路
  • 徐州市 两学一做网站官方入口
  • 微信自媒体网站建设宁波企业网站搭建图片
  • 什么是营销型企业网站旅游景区规划设计公司
  • 销售网站设计搜索引擎查询
  • 公司网站制作都需要图片网站建设合同详细
  • 网站续费模版什么网站建设最便宜
  • 哪里有免费网站空间申请哪家做的濮阳网站建设
  • 青岛建设集团网站常州城乡建设局网站
  • 实体店面做网站推广要多少钱销售型企业有哪些公司
  • 在游戏网站做中介合法中小企业管理培训班
  • 最佳经验网站网站建设服务器如何选择
  • 开发网站的过程福建住房和城乡建设部网站
  • 建立网站要花多少钱外贸公司取什么名字好
  • 做网站需要多少空间阳信县住房和城乡建设局网站
  • 网站建设兼职招聘织梦怎么建设论坛网站
  • 海南建设银行官方网站宁波市市建设法规颁发网站
  • 济宁鱼台网站建设深圳seo公司
  • 网站备案信息批量查询网站建设问题新闻资讯
  • 做携程网站的技术中国手机最好的网站排名
  • 烟台网站建设联系电话华亭县建设局网站2017
  • 个人备案企业网站经典的jq查询网站