C语言 获取汉字unicode和utf-8编码

本文详细解析了Unicode与UTF-8编码的关系及转换原理,通过实例代码演示了如何将Unicode编码转换为UTF-8编码,适用于理解字符编码转换的技术人员。

就VC而言,汉字储存一般都是以国标码形式存放在电脑上的,要想查询一个汉字的unicode编码,可以在一个字符串前面加一个‘L,也相当于让该汉字以unicode编码形式存放。

      unicode编码与utf-8编码之间的关系是什么,其实两者之间,个人感觉,utf-8编码是unicode编码的具体实现。两者之间的对应关系如下所示,可以看到。

 

  1. 当一个字符的unicode编码在0x0000 0000~0000 007F之间,utf-8编码以1个字节表示;
  2. 当一个字符的unicode编码在0x0000 0080~0000 07FF之间,utf-8编码以2个字节表示;
  3. 当一个字符的unicode编码在0x0800 0000~0000 FFFF之间,utf-8编码以3个字节表示;
  4. 当一个字符的unicode编码在0x0001 0000~0010 FFFF之间,utf-8编码以4个字节表示;

 

   Unicode符号范围   |        UTF-8编码方式
      (十六进制)          |              (二进制)
   --------------------+---------------------------------------------
   0000 0000-0000 007F | 0xxxxxxx
   0000 0080-0000 07FF | 110xxxxx 10xxxxxx
   0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
   0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

       下面贴出程序代码:

 

#include<iostream>

void GetUtf8(unsigned short uni)
{
	unsigned char utf_8[3];
	utf_8[0]=(0xe<<4) | ((uni & 0xf000)>>12);//相当于把二进制1110右移12位
	utf_8[1]=(0x2<<6) | ((uni & 0x0fc0)>>6); //相当于把二进制10右移16位
	utf_8[2]=(0x2<<6) | (uni & 0x003f);      //相当于取二进制低6位
	printf("UTF-8编码的第一个字节为0x%.2x\n",utf_8[0]);
	printf("UTF-8编码的第一个字节为0x%.2x\n",utf_8[1]);
	printf("UTF-8编码的第一个字节为0x%.2x\n",utf_8[2]);
}

void main()
{
	wchar_t str=L'和';	
	printf("'和'字Unicode编码为%.4x\n",(unsigned short)str);
	GetUtf8((unsigned short)str);
}

程序运行的效果图如下:

内容概要:本文系统研究了基于CNN-SVM的卷积神经网络与支持向量机融合的数据分类预测方法,聚焦其在工业故障识别中的应用,提供了完整的Matlab代码实现。通过CNN提取输入数据的深层空间特征,再由SVM进行高精度分类,充分发挥两者优势,有效提升了故障识别的准确性、鲁棒性与泛化能力。该方法特别适用于处理电力系统、机械设备等领域的高维、非线性、强噪声监测数据,在变压器故障诊断、轴承缺陷识别等场景中具有重要应用价值。文档还整合了机器学习、深度学习、图像处理、路径规划、电力系统优化等多个前沿科研方向的技术资源,配套大量Matlab/Simulink仿真案例与Python代码,全面支持科研复现与工程实践。; 适合人群:具备一定编程基础,熟练掌握Matlab或Python语言,从事电气工程、自动化、人工智能、机械故障诊断等相关领域研究的研发人员及高校研究生; 使用场景及目标:① 实现工业设备的状态监测与多类别故障分类;② 深入理解CNN与SVM融合模型的设计原理与工程实现细节;③ 借助所提供的丰富算法案例开展科研复现、模型优化与系统仿真验证; 阅读建议:建议按照文档目录结构系统化学习,结合百度网盘提供的完整代码资源进行动手实践,重点关注CNN特征提取层与SVM分类器之间的数据接口设计与参数调优策略,同时可延伸学习文中涉及的其他智能算法及其在电力系统、信号处理等领域的交叉应用,全面提升科研创新能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值