utf8转unicode

本文提供了一段用于将UTF8编码转换为Unicode编码的C/C++实现代码,并通过示例展示了如何读取文件中的UTF8编码字符串并将其转换为Unicode编码。

关于utf8和unicode的编码原理可以参考这篇文章:

http://hi.baidu.com/dustin_xiao/blog/item/2ab75b24c27ca32ed507426f.html

下面是实现代码,只实现了中文和英文字符的转换部分:

 

 1  int  GetUtf8ByteNumForWord( char  firstCh)
 2  {
 3       int  nRet = 0 ;
 4      __asm
 5      {    
 6          movzx ecx, byte  ptr[firstCh]
 7          and ecx, 0xE0
 8          jz  done
 9          test ecx, 0x80
10          jnz lbm
11          mov nRet, 1
12          jmp done
13  lbm:
14          cmp cl, 0xE0
15          jz  lb3
16          cmp cl, 0x0C
17          jz  lb2
18          jmp done
19  lb3:
20          mov nRet, 3
21          jmp done
22  lb2:
23          mov nRet, 2
24  done:
25      }
26       return  nRet;
27  }
28  void  Utf8ToUnicode( const   char *  utf8,  int  len, wchar_t  * unicode)
29  {
30       int  i  =   0 ;
31       int  j  =   0 ;
32       char *  temp = ( char * )unicode;
33       // 循环解析
34       while  (i  <  len)
35      {   
36           int  nByteNum = GetUtf8ByteNumForWord(utf8[i]);
37           if  (nByteNum == 0 )
38          {
39               return ;
40          }
41           switch (nByteNum)
42          {
43           case   1 :
44              temp[j]  =  utf8[i];
45              temp[j + 1 ] = 0 ;
46               break ;
47           case   2 :
48              temp[j]  =  utf8[i];
49              temp[j  +   1 =  utf8[i  +   1 ];
50               break ;
51           case   3 :
52               // 这里就开始进行UTF8->Unicode
53              temp[j  +   1 =  ((utf8[i]  &   0x0F <<   4 |  ((utf8[i  +   1 >>   2 &   0x0F );
54              temp[j]  =  ((utf8[i  +   1 &   0x03 <<   6 +  (utf8[i  +   2 &   0x3F );
55               break ;
56           default :
57               break ;    
58          }
59          j += 2 ;
60          i += nByteNum;
61      }
62      temp[j] = 0 ;
63      temp[j + 1 ] = 0 ;
64  }
65 

 

 

测试代码如下:

 

 1  std::ifstream fin( " debug\\Test.txt " );
 2  const  unsigned  int  L_MAX_LINE = 1024 ;
 3  char  utf8[L_MAX_LINE];
 4  wchar_t unicode[L_MAX_LINE];
 5  while (fin.getline(utf8,L_MAX_LINE))
 6  {
 7      Utf8ToUnicode(utf8,strlen(utf8),unicode);
 8      MessageBoxW( 0 ,unicode, 0 , 0 );
 9  }
10  fin.close();

 

 

 

用一篇文章进行测试,结果如下:

 

posted on 2010-03-03 09:45  笑落天狼 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/codingz/archive/2010/03/03/1676932.html

这个是完整源码 java实现 大数据 Spark 可视化大屏+Kafka+SpringBoot+Vue3 【大数据毕业设计】基于Spark实时电商用户行为分析与预测(Java版本+可视化大屏+Kafka+SpringBoot+Vue3) 源码+论文 完整版 数据库Mysql 随着电子商务行业的快速发展,平台每天都会产生海量的用户行为数据,包括浏览、加购、收藏和购买等。如何对这些行为数据进行实时采集、高效统计与科学预测,已成为电商运营决策和智能推荐的关键问题。传统的离线批处理方式存在延迟高、反馈慢、难以支撑实时运营的不足,因此构建一套面向实时场景的电商用户行为分析与预测系统具有重要的工程意义和应用价值。 本文设计并实现了基于 Spark 的实时电商用户行为分析与预测系统。系统采用前后端分离架构,后端以 Java 与 Spring Boot 为核心构建 REST 接口服务,结合 Apache Kafka 完成行为事件的异步投递与缓冲,利用 Spark MLlib 对窗口销售额进行线性回归预测,并将结果持久化至 MySQL;前端基于 Vue3、Element Plus 与 ECharts 实现管理后台与可视化大屏。系统主要功能包括管理员登录与个人中心、数据概览、行为数据查询、商品管理、实时统计、销售额预测以及可视化大屏展示。 在数据分析方面,系统通过行为模拟器持续生成 pv、cart、fav、buy 四类行为事件,按时间窗口聚合 PV、UV、加购数、收藏数、购买数和销售额等指标;在预测方面,采用滞后特征与小时特征构建训练集,优先使用 Spark 线性回归模型,并在异常情况下自动降级为 Java OLS 回归,保证服务可用性。测试结果表明,系统能够稳定完成实时统计与预测展示,界面交互清晰,能够满足本科毕业设计对完整性、可用性和技术综合性的要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值