1.字符集vs字符编码,编码&解码

Character----->code point----->bytes
前两者字符集的关系,可以统称为codepoint;从codepoint到在计算机上的存储形式,称为编码,反过来称为解码;
字符集:单个符号(character)对应一个无符号数字(通常16进制表示,称为代码点code point),这种对应关系称为字符集
字符编码:代码点与二进制的对应关系称为字符编码,内存或磁盘存储数据的形式为二进制

2.历史:UCS-2(两个字节定长编码)---USC-4,UTF-32(四个字节定长编码)----UTF-16------UTF-8

我国发布的:GB2312---GBK(GB2312的扩展)

3.GB2312:两个字节表示字符码

             兼容ASCII一个字节中的1位区分,1表示GB2312字符集,0表示ASCII字符集最多可以表示94*94个字符,留有一部分扩展编码主要是EUC-CN,兼容ASCII

4.Unicode:4个字节表示

UTF-8,UTF-16,变长编码UTF-16,两个字节变长编码(2,4)UTF-8,(1,2,3,4)
UTF-32,定长编码(4字节)

5.BMP:

Unicode 标识符通过一个明确的名字和一个整数来作为它的码位(code point).比如,“©” 字符的码位可以用“版权标志”和U+00A9(0xA9,也可以写作十进制 169)来表示。
Unicode 字符分为 17 组平面,每个平面拥有 2^16 (65,536)个码位.有一些码位没有分配字符,也有一些码位被保留,成为私有的,也有一些码位是永远被保留的,作为无字符的标志。每一个码位都可以用 16 进制 xy0000 到 xyFFFF 来表示,这里的 xy 是表示一个 16 进制的值,从 00 到 10。
这第一个位置(当 xy 是 00 的时候)被称为 BMP (基本多文种平面, Basic Multilingual Plane)。它包含了最常用的码位从 U+0000 到 U+FFFF。

6.JS的UTF-16(历史遗留问题,JS选用UTF-16):http://developer.51cto.com/ar...

两个字节为一个单元,LENGTH为1

7.BOM(BYTE ORDER MARK)

UTF-16 (BE)    FE FF    254 255      big endian 大端
UTF-16 (LE)    FF FE    255 254  little endian 小端UTF-16 与 UTF-32 还有一个不明显的缺点。我们知道不同的计算机存储字节的顺序是不一样的,这也就意味着U+4E2D 在 UTF-16 可以保存为4E 2D,也可以保存成2D 4E,这取决于计算机是采用大端模式还是小端模式,UTF-32 的情况也类似。为了解决这个问题,引入了 BOM (Byte Order Mark),它是一特殊的不可见字符,位于文件的起始位置,标示该文件的字节序。对于 UTF-16 来说,BOM 为U+FEFF(FF 比 FE 大 1),如果 UTF-16 编码的文件以FF FE开始,那么就意味着其字节序为小端模式,如果以FE FF开始,那么就是大端模式。
其他 UTF-* 编码的 BOM 可以参考 Representations of byte order marks by encoding

8.UTF-8,UTF-16,UTF-32的选择:

1)不考虑随机访问,UTF-8,查找第N个字符时间复杂度(O(N))
2)随机访问,只用65535之内的字符,UTF-16,时间复杂度(O(1))
3)随机访问,超过了65535,UTF-32,O(1)

9.详解UTF-8编码

编码解码UNICODE相关推荐

  1. 【转】python 字符编码与解码——unicode、str和中文:UnicodeDecodeError: 'ascii' codec can't decode...

    原文网址:http://blog.csdn.net/trochiluses/article/details/16825269 摘要:在进行python脚本的编写时,如果我们用python来处理网页数据 ...

  2. python的unicode_python的unicode及其编码解码

    Unicode支持多种编码格式,这为程序员带来了额外的负担,每当你向一个文件写入字符串的时候,你必须定义一个编码用于把对应的Unicode内容转换成你定义的格式,Python通过Unicode字符串的 ...

  3. unicode解码php,PHP解码unicode编码的中文字符

    问题背景: 晚上在抓取某网站数据,结果在数据包中发现了这么一串编码的数据:"......\u65b0\u6d6a\u5fae\u535a...... 如何解码unicode编码的字符?[好使 ...

  4. Unicode编码解码在线转换工具

    Unicode编码解码在线转换工具 http://www.cnblogs.com/txw1958/archive/2013/04/20/unicode-encode-decode.html

  5. 编程时的编码、编码解码、编码乱码问题(ASCII、GBK、Unicode、UTF-32、UTF-8)

    编程时的编码.编码乱码问题(ASCII.GBK.Unicode.UTF-32.UTF-8) 1.ASCII (American Standard Code for Information Interc ...

  6. Java注释代码也会执行之Unicode编码解码

    整理Java知识点时,在注释中一次无意的书写,导致编译失败,竟然报"非法的Unicode转义".本着IT人钻研的精神,促使自己有必要深入了解Unicode编码解码的正确用法. 1. ...

  7. unicode编码 php,PHP解码unicode编码

    这篇文章主要介绍了PHP解码unicode编码 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下function unicode_decode($name) { //方法一 $name ...

  8. python3 转码的函数_python基础3之文件操作、字符编码解码、函数介绍

    内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: 1 #/usr/bin/e ...

  9. .NET编码解码(HtmlEncode与HtmlEncode)

    原文:.NET编码解码(HtmlEncode与HtmlEncode) 编码代码: System.Web.HttpUtility.HtmlEncode("<a href=\"h ...

  10. GSM手机SMS编码解码

    有两种方式,一有短信网关,二是通过SMS的DTE-DCE接口标准(AT命令集).我们来讨论一下At命令发送短信,下面是在Siemens M75验证. 一共有三种方式来发送和接收SMS信息:Block ...

最新文章

  1. java 学到什么实习_我如何获得外展实习机会以及到目前为止所学到的知识
  2. ubuntu python3.6_在 Ubuntu 16.04 LTS 系统上安装 Python 3.6
  3. 指定查询条件,查询对应的集合List(单表)
  4. 【资源共享】Rockchip I2C 开发指南 V1.0
  5. 超级卡特兰数(bzoj 4706: B君的多边形)
  6. Freeswitch在内网,由服务器防火墙映射出来,IMSDROID作为被叫的问题
  7. Oracle数据库学习(一)--数据库原理及SQL
  8. intel固态硬盘损坏修复
  9. CSS3实现动画效果
  10. VC获取系统临时文件夹temp
  11. git push :unable to write sha1 filename ./bojects/xxxx:权限不够
  12. oracle数据库 复制粘贴,Oracle数据库复制
  13. office 2021保姆级安装与激活教程(附安装包获取)
  14. 1153. 字符串排序
  15. 【前端】Vue+Element UI案例:通用后台管理系统-用户管理:Table表格增删查改、Pagination分页、搜索框
  16. 十岁左右的孩子都可以用这样的线条画画
  17. 连连支付怎么样?最新连连跨境支付详情介绍!
  18. Linux内存管理原理笔记
  19. git 录制简单实用好工具 LICEcap
  20. FreeRTOSMini

热门文章

  1. txt.导入c语言,分求C语言问题解决——关于TXT文件导入(第二贴,能给出的这个100和另外的100一起拿走!)...
  2. java并发程序死锁检测_Java并发:隐藏的线程死锁
  3. 学生选课系统的源码---架构图MVC1
  4. go语言中关于文件的操作+工作目录的拼接
  5. java-idea-常用的快捷键
  6. outlook搜索栏跑到上面去了_南昌搜索引擎seo优化
  7. flash计算机代码怎么写,应用程序操作NorFlash示例代码分享(norflash接口使用方法)...
  8. Python文件中,reload(sys)找不到的问题
  9. Maven学习总结(六)——Maven与Eclipse整合
  10. UIPIckerView现实城市选择