浅谈ASCII 、ISO8859-1、GB2312、GBK、Unicode、UTF-8 的区别。
浅谈ASCII 、ISO8859-1、GB2312、GBK、Unicode、UTF-8 的区别。
首先,先科普一下什么是字符编码。字符是指一种语言中使用的基本实体,比如英文中的26个英文字母,标点符号,以及中文中的一个个汉字,都可以算做一个字符。而字符编码旨在将这些字符正确录入计算机中,转换成0101形式的计算机识别码,严格意义来讲字符编码其实是一种规范。遵守这种规范的录入编码,会在编码解码中获取正确的表示,不会出现乱码。
ASCII:计算机发明自美国,自然最初的字符编码规范是以英文为基础的。录入英文字符编码标准:ASCII(American Stardard Code for Information InterChange 美国信息互换标准代码),单字节编码,使用单字节8位 前127个存储英文字母及标点符号。
ISO8859-1:iso组织在ASCII基础上做的扩展,也是单字节编码。
GB2313:随着发展,各国都需要使用各国的语言使用计算机,相应的,我国大陆地区采用双字节 高低位字节的方式,存储简体中文。当存储中文字符时,高低位都存放大于127的数字,当读取高位字节时,若大于127,则认为是中文字符,将读取双字节进行识别,若小于127,则认为是英文字符,单字节识别。另外,GB2313在大于127位的编码库也提供了中文符号的编码,故英文标点符号称做半角符号,中文标点符号称作全角符号。
GBK:对GB2313的拓展,双字节编码,区别是当存储中文字符时,高位存放大于127的数字,低位不再是大于127的数字,将127之前的数字也囊括了。GBK将繁体中文也囊括进来。
Unicode:针对各个国家都使用不同的编码机制,iso组织又站了出来,对全球编码做了整个的囊括,推出了Unicode。Unicode,双字节编码,对ASCII采取高位补零的方式拓展。
UTF-8:由于Unicode是一组编码映射,即一个字符映射一个16进制数字的形式。随着互联网发展,为了节省资源(无论是硬盘存储还是流量),相应的对Unicode进行了不同的实现,这就是utf-8。UTF-8的编码规则及详细的映射Unicode详见另一篇文章: Unicode 和 UTF-8 有何区别 :https://blog.csdn.net/u013314786/article/details/50979627
最后,严格意义来讲,编码之间无法转码,只有使用正确的编码规范才能不出现乱码的问题。统一编码规范,开发时文件创建、代码使用什么编码,并标识文件编码格式,访问时根据不同的编码格式,使用对应编码才是王道。遇到编码问题,从应用程序代码编码设置、jsp页面编码设置、应用部署服务器编码设置、应用部署环境系统编码设置、浏览器编码设置等这些方面入手,查找是哪一环节的编码设置错误。
浅谈ASCII 、ISO8859-1、GB2312、GBK、Unicode、UTF-8 的区别。的更多相关文章
- BIG5, GB(GB2312, GBK, ...), Unicode编码, UTF8, WideChar, MultiByte, Char说明与区别
汉语unicode编译方式,BIG5是繁体规范,GB是简体规范 GB是大陆使用的国标码,BIG5码,又叫大五码,是台湾使用的繁体码. BIG5编码, GB编码(GB2312, GBK, ...), U ...
- AJPFX解析关于编码ansi、GB2312、unicode与utf-8的区别
大家平时遇到乱码问题是否有自己的一套解决方案?这篇文章就是介绍一下常用的编码方式关于编码ansi.GB2312.unicode与utf-8的区别 先做一个小小的试验: 在一个文件夹里,把一个txt文本 ...
- 浅谈HTTP中GET、POST用法以及它们的区别
浅谈HTTP中GET.POST用法以及它们的区别 HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符.我们可以这样认为: 一 ...
- 浅谈JS中的!=、== 、!==、===的用法和区别 JS中Null与Undefined的区别 读取XML文件 获取路径的方式 C#中Cookie,Session,Application的用法与区别? c#反射 抽象工厂
浅谈JS中的!=.== .!==.===的用法和区别 var num = 1; var str = '1'; var test = 1; test == num //tr ...
- Java基础学习总结(29)——浅谈Java中的Set、List、Map的区别
就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...
- ASCII,GB2312,GBK,Unicode,Utf-8
1.ASCII:American Stardand Code for Information Interchange,是当时美国制定出来的一套编码系统,使用7位或8位二进制来表示西文字符,0-31以及 ...
- 浅谈 ASCII、Unicode、UTF-8,一目了然
对于ASCII.Unicode.UTF-8这三种编码方式我们经常用到,也经常挂到嘴边,但他们是怎么来的,为什么要存在,具体是怎么个规则,我们并没有做深入了解,下面,就带你看一下他们到底是怎么回事吧…… ...
- 字符编解码的故事 字符集 GBK GB2312 GB18030 Unicode 的由来和区别
本文为转载. 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们认为8个开关状态作为原子单位很好,于是他们把这称为"字节". 再后来 ...
- 了解ASCII、gb系列、Unicode、UTF-8的区别
转自:http://www.douban.com/note/334994123/?type=rec ● 为什么有这么多编码? ● UTF-8和GB2312有什么区别? ● 我们在国内做网站是用UTF- ...
随机推荐
- 让Nutz支持最快的模板引擎Smarty4j
Smarty4j是一个开源的模板引擎.没错,它就是著名的php模板引擎之Java移植版. 它特点就是将模板文件或者字符串编译成java类直接执行,所以效率比一般的模板解释的方式处理要快.它发展较晚,所 ...
- java表单基础
一.表单 基本语法: <form method="表单提交方式(post/get)" action="表单提交地址"> </ ...
- 使用Picasso实现图片圆角和图片圆形
作者很好的文章访问量缺很少也很难搜到(我这里插个眼以后用的到)作者:先知丨先觉 来源:CSDN 原文:https://blog.csdn.net/github_33304260/article/det ...
- JavaScript动态实现div窗口弹出&消失功能
先积累一个JavaScript动态实现div窗口弹出&消失功能 首先是index.jsp代码 <html> <head> <link rel="styl ...
- 基础知识 SafeSEH DEP ASLR SEHOP
大多是0day书上抄的 1.SafeSEH 机制: 首先:内存中有SEH表的备份(加密过的) 在调用异常出来函数前,RtlDispatchException()函数中的行为: Ⅰ.检查异常处理链是否位 ...
- c++程序—选择结构
if(判断条件){执行语句} #include<iostream> using namespace std; #include<string> int main() { ; c ...
- S7-300定时器使用总结
以后 规定我写博客 标题 全部采用 黄色第 加粗的黑色字体. S7-300 一共5种定时器 5种定时器线圈 S7-300的SIMATIC定时器的个数为(128~2028个)与CPU的型号有关, 定时器 ...
- Gym - 101190F Foreign Postcards (期望dp)
题意:有n张标有“C”或“F”的卡片. 1.随机取前k张(1<=k<=n) 2.若这k张的第一张为“C”,则不翻转,否则,全部翻转这k张. 3.然后处理剩下的n-k张 4.重复步骤1~3直 ...
- POJ 2155:Matrix 二维树状数组
Matrix Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 21757 Accepted: 8141 Descripti ...
- netty权威指南学习笔记一——NIO入门(3)NIO
经过前面的铺垫,在这一节我们进入NIO编程,NIO弥补了原来同步阻塞IO的不足,他提供了高速的.面向块的I/O,NIO中加入的Buffer缓冲区,体现了与原I/O的一个重要区别.在面向流的I/O中,可 ...