浅谈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- ...
随机推荐
- uWSGI 和 SQLAlchemy 一起使用的注意事项
最近在使用 Flask 中使用 SQLAlchemy 开发程序,一开始好好的,然后使用 uWSGI 部署到线上后,出现了各种 mysql 客户端的问题,如: (_mysql_exceptions.P ...
- java实现在线预览 - -之poi实现word、excel、ppt转html
简介 java实现在线预览功能是一个大家在工作中也许会遇到的需求,如果公司有钱,直接使用付费的第三方软件或者云在线预览服务就可以了,例如永中office.office web 365(http://w ...
- GET乱码以及POST乱码的解决方法
GET乱码以及POST乱码的解决方法 作者:东坡下载 来源:uzzf 发布时间:2010-10-14 11:40:01 点击: 一.GET乱码的解决方法 在tomcat的server.xml文件 ...
- Golang:GOROOT、GOPATH、GOBIN变量的含义
背景 移植完了go以后,在配置变量的时候不太清楚这些变量的含义,找了有关的资料. 使用 go env可以获取 go 有关的环境变量,下面是我的go环境: GO111MODULE="" ...
- HiBench成长笔记——(10) 分析源码execute_with_log.py
#!/usr/bin/env python2 # Licensed to the Apache Software Foundation (ASF) under one or more # contri ...
- bugku love
emmm....控制台运行一下 接着查一下是否有壳 显示是没有壳的,接着查看一下结构 也没有什么发现,上ida看一下吧,顺便说一句每个人的解题思路都不一样.面对一开始都不清楚的结构我会选择交叉引用这样 ...
- PLsql的汉化工具
链接:https://pan.baidu.com/s/19J-px5I_7qcMb5CHDwJZZQ 密码:pr89
- mysql提示 Lock wait timeout exceeded解决办法 事务锁死
查询 select concat('KILL ',id,';') from information_schema.processlist; 复制结果 新建sql脚本粘贴并执行
- JS取整方法
1.toFixed方法 定义:toFixed() 方法可把 Number 四舍五入为指定小数位数的数字. 例如:将数据Num保留2位小数,则表示为:toFixed(Num):但是其四舍五入的规则与数学 ...
- Day8 - F - Tree POJ - 1741
Give a tree with n vertices,each edge has a length(positive integer less than 1001).Define dist(u,v) ...