如何识别字符串是否是UTF-8编码的
2024-08-21 13:29:43
我们先要弄明白原始字符串里的字符用的是何种编码方式,运行如下
string tmp = "你好world";
for(int i=0;i<tmp.size();++i)
{
printf("%0X ",tmp.at(i));
}
程序输出:
FFFFFFE4 FFFFFFBD FFFFFFA0 FFFFFFE5 FFFFFFA5 FFFFFFBD 77 6F 72 6C 64
很明显,原始的字符串是使用UTF-8编码的,因为它满足UTF-
8
的编码规则:
1
)对于单字节的符号,字节的第一位设为
0
,后面
7
位为这个符号的unicode码。因此对于英语字母,UTF-
8
编码和ASCII码是相同的。
2
)对于n字节的符号(n>
1
),第一个字节的前n位都设为
1
,第n+
1
位设为
0
,后面字节的前两位一律设为
10
。剩下的没有提及的二进制位,全部为这个符号的unicode码。
1字节:0xxxxxxx
2字节:110xxxxx 10xxxxxx
3字节:1110xxxx 10xxxxxx 10xxxxxx
4字节:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
最新文章
- Yii2 时间控件之把layDate做成widget
- 自定义 TableViewCell 的分割线
- 利用缓存实现APP端与服务器接口交互的Session控制
- 编程等宽字体Source Code Pro(转)
- angularjs中关于当前路由再次点击强制刷新
- Unity3d:加载Gif格式图片
- Hibernate逍遥游记-第15章处理并发问题-001事务并发问题及隔离机制介绍
- 给出一个数组A,找出一对 (i, j)使得A[i] <;= A[j] (i <; j)并且j-i最大
- F - Wormholes
- 重构后的程序:通过rsync命令抓取日志文件
- 【PHP】震惊,一张图详解递归函数!!!!
- python中@classmethod @staticmethod区别
- Servlet生命周期 和 继承关系
- Spring框架学习04——复杂类型的属性注入
- core net 实现post 跟get
- 如​何​屏​蔽​C​h​r​o​m​e​、​S​a​f​a​r​i​等​W​e​b​k​i​t​内​核​浏​览​器​文​本​框​和​文​本​域​的​高​亮​边​框​、​可​变​大​小​等​自​动​外​观​处​理
- 新增的input
- 移动web模拟客户端实现多方框输入密码效果
- Swagger实现API文档功能
- 常用脚本--Kill所有连接到指定数据库上的回话
热门文章
- Asphalting Roads(翻译!)
- Swing State: Consistent Updates for Stateful and Programmable Data Planes
- Spring+Netty4实现的简单通信框架
- PHP面向对象之final关键字
- elasticsearch6 学习之批量操作
- eclipse错误:Access restriction: The type &#39;BASE64Decoder&#39; is not API
- ProcessList.java和adj值
- 51nod 1677 treecnt(思维)
- java中初始化块、静态初始化块和构造方法
- Django获取多个数据及文件上传