字符编码和序列化

作者: Apolo_Du | 来源:发表于2018-01-22 12:12 被阅读31次

Bytes 和罐头, unicode 和食物

  • Bytes 字节数据是存储在硬盘中的二进制数据, 是 unicode 数据经过编码得来, 用于存储和传输. ( 食物需要密封成罐头才能保存和传输 )

  • unicode 数据, 是计算机内存中统一使用的数据类型, 是内存中运行的程序能"理解"的数据, 由 Bytes数据解码而来. ( 罐头需要解封才能食用 )

  • Bytes 数据和 unicode 数据之间, 存在着编码和解码的对应关系.

字符编码 和 字典

  • 常见的 ASCII, UTF-8, GBK 都是在unicode数据和 Bytes数据的转换过程中所使用的编码.

  • 默认地, 程序会根据当前计算机系统使用的字符编码来确定使用的"字典".

  • 解码:

    • 在读取硬盘文件的时候, 软件根据当前环境使用的 "字典" (字符集)来 "翻译文件" (将硬盘上的二进制数据解码为unicode数据).
  • 编码:

    • 在存储数据到硬盘上的时候, 软件根据 字符集将 unicode 数据编码为二进制数据.
  • 在网络传输数据的时候, 传递的都是二进制数据.

  • 处理数据的双方使用统一的字符编码是必要的

    • 使用不一致的字符编码就好比是 "依赖英汉词典来翻译西班牙语" .

    • 为此我们会在 shebang 指示解释器使用特定的字符编码.

 -*- coding: utf-8 -*-
  • 在HTTP请求头和响应头中指示使用的字符集

    • HTTP响应头

食物的密封和罐头的拆封 : 序列化和反序列化:

  • 序列化
    • 将内存中的数据(unicode) 变成可存储传输数据(二进制数据) 的过程.
  • 反序列化:
    • 将二进制数据 解码成 unicode数据的过程.

应用场景:

  • 了解了序列化和反序列化之后, 我们就可以很容易地理解那些需要转换数据类型的场景:
    • server socket 和 client socket 之间的数据交互:
      • socket.send() 只能发送bytes数据
  • 前端使用 Ajax 和服务器交互
  • 向文件写入数据, 读取文件

相关文章

  • 字符编码方案

    字符编码方案 简单说,字符编码方案 CES 等于 字符编码表CEF 加上字节序列化的方案。也就是说,通过CEF得到...

  • 字符编码和序列化

    Bytes 和罐头, unicode 和食物 Bytes 字节数据是存储在硬盘中的二进制数据, 是 unicod...

  • Go学习笔记(五)

    I/O小练习 字符串练习 XML编码处理 struct对象的序列化和反序列化: 使用os.Args获取简单参数 G...

  • JAVA I/O 输入输出流

    编码问题 File类的使用 RandomAccessFile类的使用 字节流 字符流 对象的序列化与反序列化

  • 文件传输基础——Java IO流

    了解 文件的编码 File类的使用 RandomAccessFile类的使用 字节流 字符流 对象的序列化和反序列...

  • java io流个人使用方法总结

    使用字节流来读写文件 使用字符流来读写文件 读取不同的编码文本时候需要进行修正 更换其输出的位置 序列化和反序列化...

  • 深入理解Java字符集编码和解码

    1、 Decoder解码与Encoder编码 decoder将字符数组转换成字符串(反序列化其实就是解码) enc...

  • jq ajax .serialize()方法

    .serialize() jQuery的serialize()方法通过序列化表单值,创建URL编码文本字符串,我们...

  • 用python实现接口测试(八、实现序列化与反序列化)

    前言 在python中,序列化可以理解为:把python的对象编码转换为json格式的字符串,反序列化可以理解为:...

  • Jquery form 表单序列化

    定义和用法 serialize() 方法通过序列化表单值,创建 URL 编码文本字符串。您可以选择一个或多个表单元...

网友评论

  • PGOne爱吃饺子:大佬 根据你写的这个意思,编码和序列化是一个东西了,都是转成成二进制数据?是不是?谢谢

本文标题:字符编码和序列化

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