zoukankan      html  css  js  c++  java
  • 关于 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 编码”的特点:

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

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

        与“ANSI 编码”不同的是:

        1. 这些“unicode 编码”能够处理所有的 unicode 字符。
        2. “unicode 字符”与“转换出来的字节”之间是可以通过计算得到的。
  • 相关阅读:
    11111 Generalized Matrioshkas
    Uva 442 Matrix Chain Multiplication
    Uva 10815 Andy's First Dictionary
    Uva 537 Artificial Intelligence?
    Uva 340 MasterMind Hints
    SCAU 9508 诸葛给我牌(水泥题)
    Uva 10420 List of Conquests(排序水题)
    Uva 409 Excuses, Excuses!
    10/26
    11/2
  • 原文地址:https://www.cnblogs.com/muhy/p/10401115.html
Copyright © 2011-2022 走看看