关于 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编码标准中,都只规定了自己语言需要的“字符”,比如汉字标准中没有规定韩文字符怎么存储。由此产生了很多“unicode”字符集编码的标准,主要分为下面三类。

经常遇到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编码”的特点:

      1. 这些“ANSI编码标准”都只能处理各自语言范围之内的unicode字符。
      2. “unicode字符”与“转换出来的字节”之间的关系是人为规定的。
    • UTF-8,UTF-16,UnicodeBig

      与“ANSI编码”类似的,把字符串通过unicode编码转化成“字节串”时,一个unicode字符可能转化成一个字节或多个字节。

      与“ANSI编码”不同的是:

      1. 这些“unicode编码”能够处理所有的unicode字符。
      2. “unicode字符”与“转换出来的字节”之间是可以通过计算得到的。

免责声明:文章转载自《关于 charset 的几种编码方式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java排序(一)实现类的排序Harbor的简单部署下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

解决SpringBoot 报错 Error parsing HTTP request header

一、SpringBoot 项目,使用自带tomcat 1、问题描述 接收 application/x-www-form-urlencoded Post 参数 data={"data":[{"id_dev":"CSB000001","state":"online","on_ts":1526004805}, {"id_dev":"CSB000001","sta...

常见正则表达式汇总【一】

1. 匹配行的起始和结束: Ip as-path access-list 20 permit 850 该过滤器匹配任何包含字符串 850 的 as-path 。匹配的 as-path 例如:( 850 ),( 23 , 5 , 850 , 155 )和( 1123 , 850 , 367 )等等。无论所匹配的串是属性中唯一的串或者属性中多个 AS 号中的一...

python文件路径分隔符的详细分析

写了挺久的python,文件分隔符的掌握肯定是必须的,但是我之前写的都是不规范的文件路径分隔符,例如‘’C:User emppython.txt’,一直都没有报过错。也不知为啥,今天查阅资料才知道自己写的都是些假的python,所以就在此记录一下。 主要是需要考虑分隔符的问题:在Windows系统下的分隔符是: (反斜杠)。 在Linux系统下的分隔符是:...

【转】一个URL编码和解码的C++类

下面的代码实现了一个用于C++中转码的类strCoding。里面有UTF8、UNICODE、GB2312编码的互相转换。 .H文件: #pragma once #include <iostream> #include <string> #include <windows.h> using namespace std;...

bad interpreter:No such file or directory 解决方法

今天在执行一个从网上考下来的脚本的时候,出现了下面的错误: Linux下面一个脚本死活也运行不了, 我检查了数遍,不可能有错。 提示:bad interpreter:No such file or directory 上网上找了好久,总算发现原来是文件格式的问题。  可以有很多种办法看这个文件是DOS格式的还是UNIX格式的, 还是MAC格式的(1)....

leecode---06---字符串,之字形---使用之字形打印一个字符串

https://leetcode.com/problems/zigzag-conversion/description/     题意 给一个行数和一个字符串,要求使用之字形将字符放到每一行上面   分析 有几行就创建一个相应大小的字符串数组,然后用一个指针指示方向进行处理,指针其实就是1或者-1,加和之后就能够在数组里面移动,指向响应行数的字符串进行处...