关于 charset 的几种编码方式
经常遇到charset=gb2312、charset=iso-8859-1、charset=utf-8这几种编码方式,它们有什么不同,看下面的图
编码方式 | 含义 |
---|---|
charset=iso-8859-1 | 西欧的编码,英文编码 |
charset=gb2312 | 中文编码 |
charset=utf-8 | 世界通用语言编码 |
charset=big5 | 繁体中文编码 |
charset=euc-kr | 韩文编码 |
除此之外,还有很多其他的编码方式,其中charset=utf-8可以用到中文、韩文、日文等世界上所有语言编码上
各个国家和地区制定的不同ANSI编码标准中,都只规定了自己语言需要的“字符”,比如汉字标准(GB2312)中没有规定韩文字符怎么存储。制定的ANSI包含两层含义:
字符集:使用哪些字符,也就是哪些汉字、字母和符号会被收入标准中。
编码:规定每个字符如何存储,即用几个字节以及哪些字节来存储
在制定ANSI标准的时候,字符集和编码一般都是同时制定的。
“unicode”字符集包含了各种语言使用到的“字符”。由此产生了很多“unicode”字符集编码的标准,主要分为下面三类。
ISO-8859-1
最简单的编码规则,每一个字节直接作为一个unicode字符。比如,[0xD6, 0xD0] 这两个字节,通过 iso-8859-1转化为字符串时,将直接得到 [0x00D6, 0x00D0] 两个 unicode 字符,即 “ÖД。
反之,将 unicode 字符串通过 iso-8859-1 转化为字节串时,只能正常转化 0~255 范围的字符。GB2312、BIG5、Shift_JIS、ISO-8859-2
把 unicode 字符串通过 ANSI 编码转化为“字节串”时,根据各自编码的规定,一个 unicode 字符可能转化成一个字节或多个字节。
反之,将unicode字节串转化成字符串时,也可能多个字节转化成一个字符。比如,[0xD6, 0xD0] 这两个字节,通过 GB2312 转化为字符串时,将得到 [0x4E2D] 一个字符,即 ‘中’ 字。“ANSI 编码”的特点:
- 这些“ANSI 编码标准”都只能处理各自语言范围之内的 unicode 字符。
- “unicode 字符”与“转换出来的字节”之间的关系是人为规定的。
UTF-8,UTF-16,UnicodeBig
与“ANSI 编码”类似的,把字符串通过 unicode 编码转化成“字节串”时,一个 unicode 字符可能转化成一个字节或多个字节。
与“ANSI 编码”不同的是:
- 这些“unicode 编码”能够处理所有的 unicode 字符。
- “unicode 字符”与“转换出来的字节”之间是可以通过计算得到的。
关于 charset 的几种编码方式的更多相关文章
- js加密,三种编码方式
·escape(69个):*/@+-._0-9a-zA-Z ·encodeURI(82个):!#$&’()*+,/:;=?@-._~0-9a-zA-Z ·encodeURI ...
- 【GBK、UTF-8、ISO8859-1】三种编码方式总结及实例
感谢:https://blog.csdn.net/youngstar70/article/details/64117297 一.总结 在Java中,String的getBytes()方法是得到一个操作 ...
- post提交数据的四种编码方式
这里总结下post提交数据的四种方式. 参考文章: https://www.jianshu.com/p/3c3157669b64
- javascript url几种编码方式
1.escape() 不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值.比如“春节”的返回结果是%u6625%u8282,escape()不对"+"编码主要 ...
- 【python】python编码方式,chardet编码识别库
环境: python3.6 需求: 针对于打开一个文件,可以读取到文本的编码方式,根据默认的文件编码方式来获取文件,就不会出现乱码. 针对这种需求,python中有这个方式可以很好的解决: 解决策略: ...
- iOS 中使用Base64编码方式编码图片数据
最近一个项目要求对图片数据简单加密下,就是那种不能直接看到图片内容就行.于是我使用了base64编码对图片数据进行编码,把图片2进制数据变成了base64的字符串,再把这个字符串保存到server的数 ...
- Google Protocol Buffer 的编码方式
Google Protocol Buffer 使用到了两种编码方式:Varints 和 zigzag. 一 Varints 编码 每个 byte 只用 7bit 表示数字,最高位 bit作为标志位,如 ...
- openssl ans.1编码规则分析及证书密钥编码方式
1 数据编码格式 openssl的数据编码规则是基于ans.1的,ans.1是什么 ? 先上高大上的解释 ASN.1(Abstract Syntax Notation One), 是一种结构化的描述语 ...
- Unicode 字符集与它的编码方式
正式内容開始之前,我们先来了解一个基本概念,编码字符集. 编码字符集:编码字符集是一个字符集,它为每个字符分配一个唯一数字.Unicode 标准的核心是一个编码字符集,字母"A"的 ...
随机推荐
- Linux内存管理—详细讲解
摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法.力求从外到内.水到渠成地引导网友分析Linux的内存管理与使用.在 ...
- Java实现 蓝桥杯VIP 算法训练 二元函数
问题描述 令二元函数f(x,y)=ax+by,a和b为整数,求一个表达式S的值. 只有满足以下要求的表达式才是合法的: 1.任意整数x是一个合法的表达式: 2.如果A和B都是合法的表达式,则f(A,B ...
- Java中IO软件包的详细介绍
一.Java Io流 Java Io流的概念 java的io是实现输入和输出的基础,可以方便的实现数据的输入和输出操作.在java中把不同的输入/输出源(键盘,文件,网络连接等)抽象表述为" ...
- Java实现 LeetCode 41 缺失的第一个正数
41. 缺失的第一个正数 给定一个未排序的整数数组,找出其中没有出现的最小的正整数. 示例 1: 输入: [1,2,0] 输出: 3 示例 2: 输入: [3,4,-1,1] 输出: 2 示例 3: ...
- Java实现第九届蓝桥杯全球变暖
全球变暖 题目描述 你有一张某海域NxN像素的照片,"."表示海洋."#"表示陆地,如下所示: ....... .##.... .##.... ....##. ...
- Java实现第九届蓝桥杯螺旋折线
螺旋折线 题目描述 如图p1.pgn所示的螺旋折线经过平面上所有整点恰好一次. 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度. 例如dis(0 ...
- 第一章04-Activity中常用的标志位
Activity的LaunchMode Android中提供了四中Activity的启动模式 1. standard 2. singleTop 3. singleTask 4. signleInsta ...
- PIP 更换国内安装源
linux: 修改 ~/.pip/pip.conf (没有就创建一个), 内容如下: [global] index-url = https://pypi.tuna.tsinghua.edu.cn/si ...
- 一台电脑如何使用多个git账号?
git相信大家都在用,一般公司有一个账号,放公司自己架的服务器中,员工自己还有一个github或者gitee的账号,存放自己的一些私有代码.本篇文章总结一下,本人在公司开发机上,使用多个git账号的干 ...
- 分享我在前后端分离项目中Gitlab-CI的经验
长话短说,今天分享我为前后端分离项目搭建Gitlab CI/CD流程的一些额外经验. Before Gitlab-ci是Gitlab提供的CI/CD特性,结合Gitlab简单友好的配置界面,能愉悦的在 ...