美文网首页
字符编码问题

字符编码问题

作者: williamgavin | 来源:发表于2018-01-29 00:35 被阅读0次

计算机只能处理数字, 但是如果要处理文本,就要将文本转化为数字才能处理。最早的计算机采用8位作为一个字节,也就是说最大只能存储到十进制的255。

为什么会出现这种情况呢?因为计算机最早是美国人发明的,英语只需要包含二十六个大小写字母和0-9数字再加上一些字符,一共127个。这个编码表称为ASCII码表。

但是随着计算机的发展,中国人也开始用计算机,我们也想在计算机中存储我们的中文字符,存储中文字符至少需要两个字节以上的内存, 于是GB2312编码表诞生了,GB2312里面加入了中文字符。

可以想到的是,既然中国人想将中文字符存入计算机, 那么韩国人呢?日本人呢? 然后韩国人发明了Euc-kr, 日本人发明了Shift_JIS。这些编码表(包括GB2312)如果存储其他国家的文字就会出现乱码。这显然不能作为国际通用的编码表。

基于这种情况,Unicode应运而生,它里面包含了所有国家的文字。Unicode通常使用2个字节编码(一些生僻的字符需要更多字节),也就是最大值为65535,这就容易解释为什么有些字在新华字典上面有,但是在电脑里面打不出来。由于Unicode包含了所有国家的字符,显然不可能再存在出现乱码的问题。

Unicode真的这么好吗?也不尽然,对于全英文的文件来说,使用Unicode比ASCII要多一倍的存储空间,这在数据的传输个存储上显然不合理。于是出现了把Unicode编码转化为"可变长编码"的UTF-8编码。

UTF-8不是固定字长编码的,而是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。这是种比较巧妙的设计,如果一个字节的第一位是0,则这个字节单独就是一个字符;如果第一位是1,则连续有多少个1,就表示当前字符占用多少个字节。

UTF-8编码把一个Unicode编码的字符用不同的长度来表示,英文用一个字节,汉字通常是3个字节。如果你要传输的文件包含大量英文,使用UTF-8 就可以节省空间。

搞清楚了 ASCII、Unicode 和 UTF-8 的关系,我们就可以总结一下现在

计算机系统通用的字符编码工作方式:在计算机内存中,统一使用 Unicode 编码,当需要保存到硬盘或者需要传输时就采用UTF-8编码。这就意味着你用记事本编辑时,从文件读取的 UTF-8 字符被转换为 Unicode 字符 到内存里,编辑完成后,保存的时候再把 Unicode 转换为 UTF-8 保存到文件。浏览网页的时候,服务器会把动态生成的Unicode内容转化为UTF-8再传输到浏览器解析。

以上内容参考:

廖雪峰的Python3

https://zhidao.baidu.com/question/1047887004693001899.html?device=mobile&ssid=0&from=1086k&uid=0&pu=usm@1,sz@1320_1002,ta@iphone_2_5.1_2_12137.1&bd_page_type=1&baiduid=E507326C90B25CEBB70C15DAA4C58DE3&tj=wenda_abstract_1_0_10_title

相关文章

  • 编码

    参考:字符编码常识及问题解析深入分析 Java 中的中文编码问题 关于字符编码,你所需要知道的 编码是什么? 编码...

  • python 字符 编码 简述

    字符编码问题很简单,当你可以区分以下几种概念之后: 字节编码与字符编码 字节串与字符串 文件编码、IDE编码、其他...

  • 字符编码问题

  • 字符编码问题

    计算机只能处理数字, 但是如果要处理文本,就要将文本转化为数字才能处理。最早的计算机采用8位作为一个字节,也就是说...

  • 字符编码问题

    原文地址:http://www.cnblogs.com/hy928302776/archive/2013/04/2...

  • 字符编码问题

    之前在十个经验点总结中提到了utf-8,之前也特地去了解了一些,大多是懵懵懂懂,所以这里又重新上网搜了各种资料,看...

  • 数据结构与算法-练习2

    一、字符编码问题 题目: 字符串编码,编码规则为: k[encoded_string],表示其中方括号内部的 en...

  • Java基础day21笔记:字符编码|“联通”|练习

    2019/7/11 17:04 三刷留念 07-字符编码 既然讲到了字符编码,我们就讲一讲编码解码的问题...

  • 黑客攻防技术宝典之编码方案

    URL编码 只要用于对扩展ASCII字符集中任何有问题的字符进行编码,使其可通过HTTP安全传输。任何URL编码的...

  • 霍夫曼编码

    问题: 请设计一个算法,给一个字符串进行二进制编码,使得编码后字符串的长度最短 思路:使用霍夫曼编码构造字符串编码...

网友评论

      本文标题:字符编码问题

      本文链接:https://www.haomeiwen.com/subject/lpytzxtx.html