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

utf

1、UTF-8

  它是一种变长的编码方式,它可以用1~4个字节表示一个符号,根据不同的符号而变化字节长度。

它是一种变长的编码方式,它可以用1~4个字节表示一个符号,根据不同的符号而变化字节长度。

  

  如图:UTF-8编码非常简单。如果一个字节的第一位是0,则这个字节单独就是一个字符;如果第一位是1,则连续有多少个1,就表示当前字符占用多少个字节。可以看出,比如对于英文字母a,UTF-8跟ASCII码的表示是一样的,所以UTF-8兼容ASCII码。

  Tips1: UTF-8编码适用于网络数据传输,前缀码能让程序员很方便地用遍历的方法定位一段网络传输过来的字符串中出问题的字符,而不会影响到其他字符,保持能显示部分最大化,这对那些工作在较差网络环境下时很有利。而那些所有非前缀多字节编码在这种场合下最后的结果都是必须丢弃从出错点开始到结尾的所有编码,无论是GB码还是Unicode/UTF-16。

  Tips2: UTF-8表示一个英文字符需要1个字节,而表示中文里我们常用到的汉字都需要3个字节。所以英文网站多是用UTF-8,而我们中文网站多是用GB码,我看腾讯、网易用的是GB2312。

  2、UTF-16

  它也是变长的,可以用2个字节或者4个字节来表示一个符号。Windows系统下的Unicode方式默认就是指UTF-16。

  Tips1: Windows NT内核的字符表示为UTF-16 little endian。为什么呢?我自己的理解是:首先Unicode字符集全球通用,其次用UTF-8编码解码,我们的程序需要不断去处理那些前缀码的逻辑,效率较低。而对于UTF-16,大多数字符都可以用两个字节来表示,处理起来so easy。

  3、UTF-32

  是定长的,用4个字节表示一个符号,就空间而言,是非常没有效率的,使用也很少,就不讨论了。

  4、文件用的哪种呢

  要知道具体是哪种编码方式,需要判断文本开头的标志,下面是所有编码对应的开头标志:

  开头标志       编码方式

  EF BB BF    UTF-8
  FE FF      UTF-16, little endian
  FF FE      UTF-16, big endian
  FF FE 00 00  UTF-32, little endian.
  00 00 FE FF  UTF-32, big-endian.

 

转载于:https://www.cnblogs.com/dunke/p/8118081.html

相关文章:

  • shell 并发进程的例子
  • 新手练练----也做即时通信系统(1)
  • 2017双11技术揭秘—分布式缓存服务Tair的热点数据散列机制
  • 8.不绑定(ngNonBindable)
  • spring boot 2.0之使用spring boot
  • ELK实战之Tomcat的json日志收集
  • 爬虫如何解决验证码的问题
  • PostgreSQL 时序数据案例 - 时间流逝, 自动压缩, 同比\环比
  • 使用 HttpClient 4 进行文件上传
  • 深入解析Spring Cloud内置的Zuul过滤器
  • exe4j打包jar文件成exe .
  • 使用 VisualVM 进行性能分析及调优
  • BZOJ1901:Zju2112 Dynamic Rankings——题解
  • Android交互
  • 第 15 章 Admonition 警告与提示
  • [译]CSS 居中(Center)方法大合集
  • canvas绘制圆角头像
  • CentOS7 安装JDK
  • HTML中设置input等文本框为不可操作
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • leetcode386. Lexicographical Numbers
  • PHP CLI应用的调试原理
  • SwizzleMethod 黑魔法
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 编写符合Python风格的对象
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 仿天猫超市收藏抛物线动画工具库
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 记一次用 NodeJs 实现模拟登录的思路
  • 免费小说阅读小程序
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 听说你叫Java(二)–Servlet请求
  • 小程序开发中的那些坑
  • 以太坊客户端Geth命令参数详解
  • Java数据解析之JSON
  • raise 与 raise ... from 的区别
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #QT项目实战(天气预报)
  • $ git push -u origin master 推送到远程库出错
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (八十八)VFL语言初步 - 实现布局
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (六)Hibernate的二级缓存
  • (全注解开发)学习Spring-MVC的第三天
  • (四)Android布局类型(线性布局LinearLayout)
  • (万字长文)Spring的核心知识尽揽其中
  • (转)3D模板阴影原理
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .Net Web项目创建比较不错的参考文章
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • @TableLogic注解说明,以及对增删改查的影响
  • [2019.2.28]BZOJ4033 [HAOI2015]树上染色
  • [C#]C# OpenVINO部署yolov8图像分类模型