Unicode:是一个字符集,每个字符对应一个唯一的unicode编码,一般是16位。

UTF8是针对Unicode的编码方式,因为如果每个字符都用unicode的编码存储的话会很浪费空间,比如说ascii字符,实际上只需要用一个字节表示,但是直接用unicode的话会需要两个字节,造成空间的浪费。使用UTF8可以解决此问题,因为UTF8是一种变长的编码方式,所以对于ascii字符只需要一个字节就可以表示,可以很大地节约空间。

UTF8在确定每个字符需要几个字节表示的方式:

只需要一个字节的时候,这个字节的最高位是0

需要多个字节的时候,看第一个字节从最高位开始有几个连续的1,有几个连续的1就用几个字节表示,其余字节均以10开头。

UTF16,同样也是针对Unicode的编码方式,只不过固定用两个字节表示。

urlencode:当字符串需要作为url的参数时,此字符串需要urlencode编码。

需要编码的字符:非ascii字符以及一些特殊的ascii字符,如空格、&、%、控制符号等。字母跟数字不需要urlencode。

base64: 是用64个(如果算上“=”号的话就是65个)可打印字符来表示二进制数据的一种方式。猜想用base64而不直接用ascii码的原因是有些ascii码不能打印,如制表符、换行符等。用base64编码的二进制数据会比原始数据大三分之一左右。

Unicode UTF8 UTF16 urlencode base64的更多相关文章

  1. 细说:Unicode, UTF-8, UTF-16, UTF-32, UCS-2, UCS-4

    1. Unicode与ISO 10646 全世界很多个国家都在为自己的文字编码,并且互不想通,不同的语言字符编码值相同却代表不同的符号(例如:韩文编码EUC-KR中“한국어”的编码值正好是汉字编码GB ...

  2. 关于编码:Unicode/UTF-8/UTF-16/UTF-32

    关于编码,绕不开下面这些概念 ①Unicode/UTF-8/UTF-16/UTF-32 ②大小端字节序(big-endian/little-endian) ③BOM(Byte Order Mark) ...

  3. Unicode(UTF-8, UTF-16)令人混淆的概念

    为啥需要Unicode 我们知道计算机其实挺笨的,它只认识0101这样的字符串,当然了我们看这样的01串时肯定会比较头晕的,所以很多时候为了描述简单都用十进制,十六进制,八进制表示.实际上都是等价的, ...

  4. (转) Unicode(UTF-8, UTF-16)令人混淆的概念

    原文地址:http://www.cnblogs.com/kingcat/archive/2012/10/16/2726334.html 为啥需要Unicode 我们知道计算机其实挺笨的,它只认识010 ...

  5. 一句话理解字符编码(Unicode ,UTF8,UTF16)

    Unicode和ASCII码属于同一级别的,都是字符集,字符集规定从1到这个字符集的最大范围每个序号都各表示什么意思.比如ASCII字符集中序号65表示"A". 那接下来的UTF8 ...

  6. Unicode(UTF-8, UTF-16)令人混淆的概念(转)

    文章转自http://www.cnblogs.com/kingcat/archive/2012/10/16/2726334.html (http://swiftlet.net/archives/cat ...

  7. Unicode(UTF-8, UTF-16)令人混淆的概念----我看完了 不错

    来自:http://www.cnblogs.com/kingcat/archive/2012/10/16/2726334.html ---------------------------------- ...

  8. 【转】Unicode(UTF-8, UTF-16)令人混淆的概念

    参考地址:http://www.cnblogs.com/kingcat/archive/2012/10/16/2726334.html Java中,char类型用UTF-16编码描述一个代码单元 为啥 ...

  9. Unicode UTF-8 UTF-16的关系

    以下仅为个人学习的记录,如有疏漏不妥之处,还请不吝赐教. 关系 Unicode是一个字符集.顾名思义,字符的集合.GBK,BIG5,ISO8859-1,ASCII都是字符集. 有一点不同的是,Unic ...

随机推荐

  1. undefined reference to `__isnan'

    sjs@sjs-virtual-machine:~/work/Onvif$ arm-hisiv100nptl-linux-gcc *.c -lpthread -static -o ../../nfsm ...

  2. 一次cookie引起系统不断要求重新登录问题分析

    我们的产品里有一配置服务(tomcat),采用ajax来通信交互 但是最近频频发现登录后马上弹出要重新登录的情况,一开始以为是cookie没有带上导致session找不到,后来问题依旧,查看浏览器co ...

  3. [UE4]嵌套Canvas

  4. C#数组冒泡

    string[,] s2 = new string[2, 3] { { "a", "b","c" }, { "d", & ...

  5. nvm use 指定版本后无效 win7

    如图所示,nvm install 6.12.3之后,使用命令nvm use 6.12.3,提示切换成功,但是执行node app.js时,报错没有node命令,执行nvm ls查看,发现没有任何版本是 ...

  6. day19常用模块2

    常用模块21 shelve模块  也是一种序列化方式    使用方法        1.open     sl = shelve.open("shelvetest.txt")   ...

  7. idea 和eclipse的debug调试快捷键对比

    IntelliJ Idea 常用快捷键列表 Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Sh ...

  8. sql语句基础(一)

    数据库基本操作  创建数据库  CREATE DATABASE database-nam 2.  删除数据库 drop database dbname 3. 备份sql server --- 创建 备 ...

  9. android 相对布局例子代码

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  10. gentoo virtualbox 无法启动

    以前的 virtualbox 可以启动,现在无法启动. 原因是因为更新了内核,而 virtualbox 的模块没有跟着更新,所以导致无法启动. emerge --ask --oneshot @modu ...