编码转换

C#文字代码页,文字编码的代码页名称速查表

﹥>﹥吖頭↗ 提交于 2020-03-08 22:21:47
前言 众所周知计算机只能识别二进制数字,如1010,1001。我们屏幕所看到的文字,字符都是和二进制转换后的结果。将我们的文字按照某种规则转换二进制存储在计算机上,这一个过程叫字符编码,反之就是解码。目前存在多种字符编码方式,一组二进制数字根据不同的解码方式,会得到不同的结果,有时甚至会得到乱码。这也就是为什么我们打开网页时有时会是乱码,打开一个文本文件有时也是乱码,而换了一种编码就恢复正常了。CLR中的所有字符都是16位Unicode来表示的。CLR中的Encoding就是用于字节和字符之间的转换的。更多字符编码知识请参考, 字符集和字符编码(Charset & Encoding) 关于Encoding CLR中的Encoding是在System.Text命名空间下的,它是一个抽象类(abstract class), 所以不能被直接实例化,它主要有如下的派生类: ASCIIEnding,UnicodeEncoding,UTF32Encoding,UTF7Encoding,UTF8Encoding ,你可以根据需要选择一个合适的Encoding来进行编码和解码。你也可以调用Encoding的静态属性ASCII,Unicode,UTF32,UTF7,UTF8,来构造一个Encoding。其中Unicode是表示16位Encoding。调用静态属性和实例化一个子类的效果是一样的

HTTP所有概念

老子叫甜甜 提交于 2020-03-08 22:08:00
HTTP所有概念 上一篇文章我们大致讲解了一下 HTTP 的基本特征和使用,大家反响很不错,那么本篇文章我们就来深究一下 HTTP 的特性。我们接着上篇文章没有说完的 HTTP 标头继续来介绍(此篇文章会介绍所有标头的概念,但没有深入底层) HTTP 标头 先来回顾一下 HTTP1.1 标头都有哪几种 HTTP 1.1 的标头主要分为四种, 通用标头 、 实体标头 、 请求标头 、 响应标头 ,现在我们来对这几种标头进行介绍 通用标头 HTTP 通用标头之所以这样命名,是因为与其他三个类别不同,它们不是限定于特定种类的消息或者消息组件(请求,响应或消息实体)的。HTTP 通用标头主要用于传达有关消息本身的信息,而不是它所携带的内容。它们提供一般信息并控制如何处理和处理消息。 尽管通用标头不会限定于是请求还是响应报文,但是某些通用标头大部分或全部用于一种特定类型的请求中。也就是说,如果某个通用标头出现在请求报文中,那么大部分通用标头都会显示在该请求报文中。响应报文也是一样的。 先列出来一个清单,讲明我们都需要介绍哪些通用标头 Cache-Control Connection Date Pragma Trailer Transfer-Encoding Upgrade Via Warning Cache-Control 缓存(Cache) 是计算机领域里的一个重要概念

字符编码,字符与字节,文件操作

北城以北 提交于 2020-03-08 09:38:27
一,复习 ''' 类型转换 1.数字类型:int() | bool() | float() 2.str与int: int('10') | int('-10') | int('0') | float('-.5') | float('3.14') | str(数字) 3.重点 - str与list:    'abc' => ['a', 'b', 'c']: list('abc') | ''.join(['a', 'b', 'c'])    'abc|def|xyz' => ['abc', 'def', 'xyz']: s.split('|') | '|'.join(ls) 4.list、set、tuple:类型() 5.list与dict:   a=1&b=2&c=3 <=> [('a', 1), ('b', 2), ('c', 3)] <=> {'a': 1, 'b': 2, 'c': 3}   dic = {}    for k, v in [('a', 1), ('b', 2), ('c', 3)]:   dic[k] = v    ls = []   for k, v in {'a': 1, 'b': 2, 'c': 3}.items():   ls.appen((k, v)) 6.可以通过字典构建任意数据的映射关系:    type_map = {    1: '壹',   

从 PostCSS 插件,体验编码到发布全过程

我怕爱的太早我们不能终老 提交于 2020-03-07 18:59:42
因项目的需求,自己动手写了一个 PostCSS 插件 postcss-px2vw ,主要用于将 px 转成 vw 和 rem , rem 作为回退模式。也刚好借此机会总结一下 npm 包的发布流程,文章还会介绍到七牛云图片的使用与上传相关的技巧,以及期间遇到的一些问题。 为什么需要它 转换 px 单位的插件有很多,知名的有 postcss-px-to-viewport 和 postcss-pxtorem ,前者是将 px 转成 vw ,后者是将 px 转成 rem 。 起初是看了大漠的一篇文章 《如何在Vue项目中使用vw实现移动端适配》 ,于是怀着激动的心情,就在项目中也使用 vw 来做移动端的适配。该文章大力推行用 vw 代替 rem 做适配,在 amfe-flexible 项目文档中也推荐 vw 的替代方案。但是考虑到移动端对 vw 的支持情况不如 rem ,所以仍有很多项目都选择使用 rem 来布局。于是就想到将 rem 作为一种回退机制,或许觉得没必要,直接放弃 vw 使用 rem 不就完了?确实,不过既然是折腾,也就不需要那么多理由了,其实 饿了么平台 就用了此方案。 关于移动端适配方案,也有一些个人的亲身体会,有时间另启一篇文章详细总结一下 。 实现方案 首先,得提一下 CSS 样式的回退原理:当 CSS 遇到无法识别的一些样式时,不会报错,而是忽略它

对软件工程以及软件,程序的自我理解

笑着哭i 提交于 2020-03-07 17:16:01
什么是软件工程?这是一个值得我们软件工程专业的学子们思考的问题。 百度百科上早已给出笼统的定义:软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计工具、数据库、软件开发工具、系统平台、标准、设计模式等方面。 那么我们自己的软件工程又是什么。我们应从软件和工程两个词来剖析:软件和工程。软件,software,我们每天都用到的抖音,微信等等都是软件,那么软件和程序又有什么区别的,或者说软件就是程序呢。 答案肯定是否定的。软件=程序+文档,是包含程序的有机集合体,程序是软件的必要元素。 而工程是科学和数学的某种应用是以最短的时间和最少的人力、物力做出高效、可靠且对人类有用的东西。顾名思义,软件工程则是应用程序和文档,在适当的外力助力下完成促进社会发展的软件。 首先进行调研,根据人们的不同需求来设计相应程序,第二阶段进行软件开发,程序员们将第一阶段程序的设计转换成计算机可以接受的系统编码。当完成系统编码后,便开始进行软件的测试,希望可以以更小的代价发现尽可能多的错误,避免软件危机的发生。完成一系列工作后便是软件的维护,根据软件的运行情况和新的需求添加,进行不断的完善软件,并增添说明。 总的来说,软件工程并不单单的是一门工程,从Ada Lovelace设计了第一个程序开始后,几十年过去,软件经历了一系列重要的变化与发展,软件开始越来越符合人们的思维模式

深入理解Python字符编码

社会主义新天地 提交于 2020-03-07 12:45:24
不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError、UnicodeDecodeError 错误,每当遇到错误我们就拿着 encode、decode 函数翻来覆去的转换,有时试着试着问题就解决了,有时候怎么试都没辙,只有借用 Google 大神帮忙,但似乎很少去关心问题的本质是什么,下次遇到类似的问题重蹈覆辙,那么你有没有想过一次性彻底把 Python 字符编码给搞懂呢? 完全理解字符编码 与 Python 的渊源前,我们有必要把一些基础概念弄清楚,虽然有些概念我们每天都在接触甚至在使用它,但并不一定真正理解它。比如:字节、字符、字符集、字符码、字符编码。 字节 字节(Byte)是计算机中数据存储的基本单元,一字节等于一个8位的比特,计算机中的所有数据,不论是保存在磁盘文件上的还是网络上传输的数据(文字、图片、视频、音频文件)都是由字节组成的。 字符 你正在阅读的这篇文章就是由很多个字符(Character)构成的,字符一个信息单位,它是各种文字和符号的统称,比如一个英文字母是一个字符,一个汉字是一个字符,一个标点符号也是一个字符。 字符集 字符集(Character Set)就是某个范围内字符的集合,不同的字符集规定了字符的个数,比如 ASCII 字符集总共有128个字符,包含了英文字母、阿拉伯数字

以太坊中RLP编码详解一文全搞懂

人盡茶涼 提交于 2020-03-07 12:44:44
定义 RLP(Recursive Length Prefix,递归长度前缀)是一种编码算法,用于编码任意的嵌套结构的二进制数据,它是以太坊中数据序列化/反序列化的主要方法,区块、交易等数据结构在持久化时会先经过RLP编码后再存储到数据库中。 RLP编码的定义只处理两类数据:一类是字符串(例如字节数组),一类是列表。字符串指的是一串二进制数据,列表是一个嵌套递归的结构,里面可以包含字符串和列表,例如["cat",["puppy","cow"],"horse",[[]],"pig",[""],"sheep"]就是一个复杂的列表。其他类型的数据需要转成以上的两类,转换的规则不是RLP编码定义的,可以根据自己的规则转换,例如struct可以转成列表,int可以转成二进制(属于字符串一类),以太坊中整数都以大端形式存储。 RLP编码规则 对于单个字节,如果它的值范围是[0x00, 0x7f],它的RLP编码就是它本身。 否则,如果一个字符串的长度是0-55字节,它的RLP编码包含一个单字节的前缀,后面跟着字符串本身,这个前缀的值是0x80加上字符串的长度。由于被编码的字符串最大长度是55=0x37,因此单字节前缀的最大值是0x80+0x37=0xb7,即编码的第一个字节的取值范围是[0x80, 0xb7]。 如果字符串的长度大于55个字节,它的RLP编码包含一个单字节的前缀

符号(汉字)编码方式

拟墨画扇 提交于 2020-03-07 11:56:31
字符集之在UTF-8中,一个汉字为什么需要三个字节? (一)在UTF-8中,一个汉字为什么需要三个字节? UNICODE是万能编码,包含了所有符号的编码,它规定了所有符号在计算机底层的二进制的表示顺序。有关Unicode为什么会出现就不叙述了,Unicode是针对所有计算机的使用者定义一套统一的编码规范,这样计算机使用者就避免了编码转换的问题。Unicode定义了所有符号的二进制形式,也就是符号如何在计算机内部存储的,而且每个符号规定都必须使用两个字节来表示,也就是用16位二进制去代表一个符号,这样就导致了一个问题,英文编码的空间浪费,因为在ANSI中的符号都是一个字节来表示的,而使用了UNICODE编码就白白浪费了一个字节。也就代表着Unicode需要使用两倍的空间去存储相应的ANSI编码下的符号。虽然现在硬盘或者内存都很廉价,但是在网络传输中,这个问题就凸显出来了,你可以这样想想,本来1M的带宽在ANSI下可以代表1024 1024个字符,但是在Unicode下却只能代表1024 1024/2个字符。也就是1MB/s的带宽只能等价于512KB/s,这个很可怕啊。所以为了解决符号在网络中传输的浪费问题,就出现了UTF-8编码,Unicode transfer format -8 ,后面的8代表是以8位二进制为单位来传输符号的,但是这样又导致了一个问题,虽然UTF

opencv支持多种流行视频格式文件的读取

随声附和 提交于 2020-03-07 05:41:31
写入应该是只支持 avi , 因为其他格式一般都是压缩格式,压缩格式一般都有帧间压缩,也就是不能只写一帧,可以保存为 avi 后,转码. 以 AVI 结尾的视频文件有以下几种: 1 、 非压缩格式的 AVI 文件(或是 MPEG1 格式的),这个不需要装任何插件就可以播放了。 2 、 DIVX 格式的 AVI ,这也是 MPEG4 的一种,安装最新的 DIVX 5.21 (目前最新版),就可以播放了,不过 缺点是在播放之初会有一个 DIVX 的标记显示几秒。 下载地址: http://gupin.fangdown.com/soft/138.htm 3 、 XVID 格式的 AVI ,这也是 MPEG4 的一种,可以说是从 DIVX 变种 而来的,据说是 XVID 原作者不满意 DIVX 商业化收费的行为,而开发的一个全 Free 的 MPEG4 编码核心,安装最新的 XVID ( 1.02 版)就可以播放。 下载地址 : http://gupin.fangdown.com/soft/45.htm 4 、 ffdshow MPEG-4 格式的 AVI ,现在越来越多的 AVI 都采用 ffdshow MPEG-4 来, 集成了 DIVX 与 XVID 的一 种东西 (好象还支持 WMV 与 AC3 音频),因此如果你装了 ffdshow MPEG-4 ,就可以不用装 XVID 与

Python记录——字符串的常用方法

瘦欲@ 提交于 2020-03-07 05:36:08
1. 编码/解码( encode()/decode() ) encode() 是将 Python 内部默认的编码 unicode编码 转换成其他编码格式,decode()是将其他编码格式转换成 unicode编码,列如: strs = '一段话' print(strs.encode()) #如果没有指定编码格式,则默认编码为utf-8,表示将unicode编码的字符串strs转换成utf-8编码 print(strs.encode('gbk')) #表示将unicode编码的字符串strs转换成gbk编码 print(strs.encode('gbk').decode('gbk')) #表示将unicode编码的字符串strs转换成gbk编码,再将gbk编码的字符串strs转换成unicode编码 结果为: b'\xe4\xb8\x80\xe6\xae\xb5\xe8\xaf\x9d' b'\xd2\xbb\xb6\xce\xbb\xb0' 一段话 2. index()、rindex()、count() index() 用来查找子字符串在字符串中最先出现的位置,rindex() 用来查找子字符串在字符串中最后出现的位置,count()用来统计子字符串在字符串中出现的次数,列如: strs = '吃葡萄不吐葡萄皮,不吃葡萄倒吐葡萄皮。' print(strs.index('萄'))