vicki753's iOS 基础--编码知识点

今天一不小心入了编码的坑,今天不搞懂以后估计又要入坑
然后查阅各种资料,发现原来显示的这些文字,字母数字都是有编码和字符集之说的。虽然我知道有二进制表示文字然后就像翻译一样变为可阅读的字符,但是真正的编码什么的都不懂,其实也算是一种规则吧,用规则来转化

什么是字符集/字符编码

在“维基百科”里的英文版就是说: character set redirected character encoding,也就是说中文说的字符编码和字符集就相互映射,应该是相似,在定义时它又说不是完全一样,下文:

维基百科的英文解释:

In computing character encoding is used to represent a repertoire of characters by some kind of encoding system. Depending on the abstraction level and context, corresponding code points and the resulting code space may be regarded as bit patterns, octets, natural numbers, electrical pulses, etc. A character encoding is used in computation, data storage, and transmission of textual data. "Character set", "character map", "codeset" and "code page" are related, but not identical, terms.
大概意思就是 :在计算机中字符编码是被用来根据不同的编码系统去代表一套字符指令。 根据抽象级别和上下文,相应的代码点和生成代码空间可以被看作是一种位模式,八进制,自然数,电脉冲等。
字符编码运用在文本数据的计算、数据存储和传输。“字符集”、“字符映射”、“代码集”、“代码页”是相关的,但不完全相同。

unicode编码

unicode 及其并行标准ISO/IEC 10646通用字符集,共同构成一个现代的、统一的字符编码。而不是直接映射八位字节。它们分别定义字符,相应的自然数(代码点)这些数字是如何变吗为一系列的固定大小的自然数(代码单元),最后这些单位是如何编码为一连串的八位字节,这个分解的目的是建立在一套通用的字符,可以以多种方式进行编码,来描述这个模型是否正确需要更精确的比“字符集”和字符编码。现代模型时使用的术语方面。
模式有几种:

  • a character repertories 一个字符集

  • a code character set 一个字符编码集 , ec: ISO/IEC 8859-1

  • a character encoding form

  • a character encoding scheme ec:UTF-8、 UTF-16 、UTF-32 、ISO-IEC 2022

character sets, character maps , code pages

Historically, the terms "character encoding", "character map", "character set" and "code page" were synonymous in computer science, as the same standard would specify a repertoire of characters and how they were to be encoded into a stream of code units – usually with a single character per code unit. But now the terms have related but distinct meanings,[5] due to efforts by standards bodies to use precise terminology when writing about and unifying many different encoding systems.[4]Regardless, the terms are still used interchangeably, with character set being nearly ubiquitous.

历史上,术语:“字符编码”、“字符映射”、“字符集”、“代码页” 在电脑科学里面都是同义词,因为相同的标准将指定一个字符集的指令以及如何编码一个流的代码单元。 但是 因为标准组织在努力写关于统一不同的编码系统时使用的精确术语, 有一些是相关的词语,但是会有截然不同的含义。不管怎样,字符集几乎无处不在的情况下, 仍然可互换使用。

下列是常见字符集

后面跟着的数字代表字符集占用的字节数
比如有:
英文字母:
GB2312 :1
GBK :1
GB18030 : 1
ISO-8859-1 :1
UTF-8 : 1
UTF-16 : 4
UTF-16BE :2
UTF-16LE :2

中文字母:
GB2312 : 2
GBK : 2
GB18030 :2
ISO-8859-1 : 1
UTF-8 : 3
UTF-16 :4
UTF-16BE : 2
UTF-16LE :2

实际问题:char可以存储中文汉字,采用两个char元素来表示,第一个事负值,代表这是一个非ASCII字符,然后找汉字或者其他非ASCII字符集,

参考
https://en.wikipedia.org/wiki/Character_encoding
https://blog.csdn.net/caowei880123/article/details/50254075
http://cenalulu.github.io/linux/character-encoding/

你可能感兴趣的:(vicki753's iOS 基础--编码知识点)