编码转换

转: gbk, gb2312,big5,unicode,utf-8,utf-16的区别

和自甴很熟 提交于 2020-02-12 04:38:50
以前收藏的一篇 标题 谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词 选择自 fmddlmyy 的 Blog 关键字 谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词 这是一篇程序员写给程序员的趣味读物。所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级。整理这篇文章的动机是两个问题: 问题一: 使用Windows记事本的“另存为”,可以在GBK、Unicode、Unicode big endian和UTF-8这几种编码方式间相互转换。同样是txt文件,Windows是怎样识别编码方式的呢? 我很早前就发现Unicode、Unicode big endian和UTF-8编码的txt文件的开头会多出几个字节,分别是FF、FE(Unicode),FE、FF(Unicode big endian),EF、BB、BF(UTF-8)。但这些标记是基于什么标准呢? 问题二: 最近在网上看到一个ConvertUTF.c,实现了UTF-32、UTF-16和UTF-8这三种编码方式的相互转换。对于Unicode(UCS2)、GBK、UTF-8这些编码方式,我原来就了解。但这个程序让我有些糊涂,想不起来UTF-16和UCS2有什么关系。 查了查相关资料,总算将这些问题弄清楚了,顺带也了解了一些Unicode的细节

python文件操作与字符编码

最后都变了- 提交于 2020-02-12 04:31:38
知识内容: 1.文件对象与文件处理流程 2.基本操作 3.上下文管理 4.文件的修改与文件内光标的移动 5.字符编码 一、文件对象与文件处理流程 1.文件对象 (1)文件分类 按文件中数据的组织形式可以把文件分为 文本文件 和 二进制文件 文本文件中存储的是常规字符串,由若干文本行组成,通常每行以换行符('\n')结尾 二进制文件把对象内容以字节串(bytes)进行存储,无法用记事本及其他普通文本处理软件打开,也无法直接被人阅读理解,需要使用专门的软件进行解码才能读取其中的内容 (2)文件对象: python中内置了文件对象,通过open函数可以打开一个文件并创建一个文件对象,通过对这个文件对象的一系列操作来修改、读、写文件 eg: 文件对象名 = open(文件名[, 打开方式[,缓冲区]])    f1 = open('file.txt', 'r') (3)文件打开方式(文件打开模式): r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】 w,只写模式【不可读;不存在则创建;存在则清空内容】 x, 只写模式【不可读;不存在则创建,存在则报错】 a, 追加模式【不存在则创建;存在则只追加内容】 "+" 表示可以同时读写某个文件 r+, 读写【可读,可写】 w+,写读【可读,可写】 x+ ,写读【可读,可写】 a+, 写读【可读,可写】 "b"表示以字节的方式操作 rb 或

python编码与解码

别等时光非礼了梦想. 提交于 2020-02-12 04:10:13
基本概念 字符 :表示数据和信息的字母、数字或其他符号。在电子计算机中,每一个字符与一个二进制编码相对应。 字符的标识( 码位 ):是0-1114111的数字,在Unicode标准中以 4-6个十六进制数字 表示,而且加前缀“U+”。例如,字母A的码位是U+0041,欧元符号的码位是U+20AC. 字符的具体表述 取决于所用的编码。编码是在码位和字节序列之间转换时使用的算法。在UTF-8编码中,A(U+0041)的码位编码成单个字节\x41,而在UTF-16LE编码中编码成两个字节\x41\x00。欧元符号(U+20AC)在UFT-8编码中是三个字节\xe2\x82\xac,而在UTF-16LE编码中编码成两个字节\xac\x20。 编码 :把码位转换成字节序列(通俗来说:把字符串转换成用于存储或传输的字节序列,python中是.encode()) 解码 :把字节序列转换成码位(通俗来说:把字节序列转换成人类可读的文本字符串,python中是.decode()) >>> s = 'café' >>> len(s) # Unicode字符数量 4 >>> b = s.encode('utf8') # 编码为bytes >>> b b'caf\xc3\xa9' >>> len(b) # 字节数 5 >>> b.decode('utf8') # 解码 'café 字节概要

编码 解码 python

不想你离开。 提交于 2020-02-12 04:09:27
之前一直对python文件中编码解码糊里糊涂,今天看到一篇文章,觉得把我讲的有点明白了。写个心得吧。 1、编码解码是怎么一回事? Python 里面的编码和解码也就是 unicode 和 str 这两种形式的相互转化。 编码是 unicode -> str,相反的,解码就是 str -> unicode。 str形式,也就是字符串形式都是以一定的编码格式存在的,常见的编码格式有utf-8、ASCII、gb2312等等。 str1.decode(‘gb2312’),表示将gb2312编码的字符串str1解码成unicode。 str2.encode(‘utf-8’),表示将unicode字符串str2转换成用utf-8格式编码的字符串。 不同编码格式的字符串之间相互转换编码格式的话,都要先解码成unicode,再编码成其他编码格式的字符串。就拿上面的str1来说,将str1转成utf-8编码的字符串,需要这么做: str1.decode(‘gb2312’).encode(‘utf-8’)。 2、如何在python文件中指定编码、解码格式呢 我们在编写python脚本的时候,通常在#! /usr/bin/env python下面一行指定该py文件的默认编码格式。比如# coding=utf-8,表示该py文件中的字符串都是以utf-8格式编码的。 而sys

字符编码(copy from linhaifeng)

孤人 提交于 2020-02-12 00:29:09
一 计算机基础知识 二 文本编辑器存取文件的原理(nodepad++,pycharm,word) #1、打开编辑器就打开了启动了一个进程,是在内存中的,所以,用编辑器编写的内容也都是存放与内存中的,断电后数据丢失 #2、要想永久保存,需要点击保存按钮:编辑器把内存的数据刷到了硬盘上。 #3、在我们编写一个py文件(没有执行),跟编写其他文件没有任何区别,都只是在编写一堆字符而已。 三 python解释器执行py文件的原理 ,例如python test.py #第一阶段:python解释器启动,此时就相当于启动了一个文本编辑器 #第二阶段:python解释器相当于文本编辑器,去打开test.py文件,从硬盘上将test.py的文件内容读入到内存中(小复习:pyhon的解释性,决定了解释器只关心文件内容,不关心文件后缀名) #第三阶段:python解释器解释执行刚刚加载到内存中test.py的代码( ps:在该阶段,即真正执行代码时,才会识别python的语法,执行文件内代码,当执行到name="egon"时,会开辟内存空间存放字符串"egon") 四 总结python解释器与文件本编辑的异同 #1、相同点:python解释器是解释执行文件内容的,因而python解释器具备读py文件的功能,这一点与文本编辑器一样 #2、不同点:文本编辑器将文件内容读入内存后,是为了显示或者编辑

字符编码

喜欢而已 提交于 2020-02-11 22:55:12
一 什么是字符编码   计算机要想工作必须通电,即用‘电’驱使计算机干活,也就是说‘电’的特性决定了计算机的特性。电的特性即高低电平(人类从逻辑上将二进制数1对应高电平,二进制数0对应低电平),关于磁盘的磁特性也是同样的道理。   结论:计算机只认识数字   很明显,我们平时在使用计算机时,用的都是人类能读懂的字符(用高级语言编程的结果也无非是在文件内写了一堆字符),如何能让计算机读懂人类的字符?   必须经过一个过程:   #字符--------(翻译过程)------->数字   #这个过程实际就是一个字符如何对应一个特定数字的标准,这个标准称之为字符编码. 二 字符编码的发展史与分类(了解) 计算机由美国人发明,最早的字符编码为ASCII,只规定了 英文字母数字和一些特殊字符与数字 的对应关系。最多只能用 8 位来表示(一个字节=1byte字节=8bit),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号 当然我们编程语言都用英文没问题,ASCII够用,但是在处理数据时,不同的国家有不同的语言,日本人会在自己的程序中加入日文,中国人会加入中文。 而要表示中文,单拿一个字节表表示一个汉字,是不可能表达完的(连小学生都认识两千多个汉字),解决方法只有一个,就是一个字节用>8位2进制代表,位数越多,代表的变化就多,这样,就可以尽可能多的表达出不通的汉字 所以

BugkuCTF wp

北慕城南 提交于 2020-02-11 16:51:30
MISC 签到题 扫码关注微信公众号即可获得flag 这是一张单纯的图片 用UE打开如图,在ascii码最下面发现一串编码,发现是字符实体编码。 https://www.qqxiuzi.cn/bianma/zifushiti.php 网站在线解码可得flag 隐写 打开图片,先用stegsolve跑一边没有发现什么,LSB也没有什么,用UE打开也没有什么奇怪的。用binwalk跑一边,没有隐藏文件。 所以考虑是不是高度修改,在IHDR后面将高度改大一些,果然发现flag ## telnet 用wireshark打开流量包,在telent包的data中发现flag 眼见非实(ISCCCTF) 下载文件后,用UE打开发现是PK开头,则是zip压缩包 改后缀后解压得到一个docx文件,猜测可能是zip包。 docx文件本质上就是一个zip压缩包,文件内容在zip压缩包中(文本内容,字体格式等等)。 改后缀为zip后打开 发现一些文件,没有明显的flag信息,但应该就在这些文件里。 一个个用firefox打开,F3快速查找。 得到flag. 啊哒 下载后发现是jpg文件,可能不是LSB隐写(png才有lsb隐写),用stagsolve跑了一下果然没有。用UE打开发现文件比较大,可能有藏东西。 用binwalk跑一下,果然有zip文件。 而且就是flag.txt

视频CDN缓存

落爺英雄遲暮 提交于 2020-02-11 01:43:06
文章目录 视频特点 视频参数 码率调整 什么是码率调整 码率自适应技术 视频传输 基于HTTP的流媒体传输 CDN cache服务器 什么是CDN CDN形象比喻 CDN 文件系统&&缓存机制 视频+cache CDN实施技术 用户访问网站步骤 video quality delivered by individual CDNs can vary substantially across clients (e.g., across different ISPs or content providers) and also across time (e.g., flash crowds) [39, 37]. Similarly,because the video player has only a few seconds worth of buffering and the bandwidth could fluctuate significantly, we need to make quick decisions (e.g., future bitrates) based on the current client buffer level and bandwidth so that the buffer does not drain out [27]. 视频特点 -变化不大

python基础面试集锦(1-50)

亡梦爱人 提交于 2020-02-10 18:16:28
目录 1、Python和Java、PHP、C、C#、C++等其他语言的对比 2、简述解释型语言和编译性语言? 3、Python解释器种类以及特点? 4 、位和字节的关系? 5、b、B、KB、MB、GB的关系? 6、一个字符不同编码对应的字节数? 7、PEP8编码规范? 8、or and 计算规则 9、求结果:or and 10、ASCII、unicode、utf-8、gbk区别? 11、字节码和机器编码的区别? 12、三元运算编写格式? 13、Python2和Python3的区别? 14、一行代码数值交换?交叉赋值 15、python2和python3中Int和long的区别? 16、xrange和range的区别? 17、字符串的反转序列?步长-1切 18、文件操作时:xreadlines和readlines的区别? 19、列举布尔值位false的常见值? 20、is和==的区别? 21、那些情况下,y!=x-(x-y)会成立? 22、现有字典dict = {'a':20,'b':25,'c':10,'d':50}请按字典中的value值进行排序? 23、如何将字典的键值互换? 24、字典和json的区别? 25、什么是可变、不可变类型? 26、存入字典里的数据有没有先后排序? 27、字典推导式? 28、描述一下dict的item()方法与iteritems()的不同? 29

数据库(一)

ⅰ亾dé卋堺 提交于 2020-02-10 16:32:43
作者:格物 https://shockerli.net/post/1000-line-mysql-note/ Windows服务 -- 启动MySQL net start mysql -- 创建Windows服务 sc create mysql binPath= mysqld_bin_path (注意:等号与值之间有空格) 连接与断开服务器 mysql -h 地址 -P 端口 -u 用户名 -p 密码 SHOW PROCESSLIST -- 显示哪些线程正在运行 SHOW VARIABLES -- 显示系统变量信息 数据库操作 -- 查看当前数据库 SELECT DATABASE(); -- 显示当前时间、用户名、数据库版本 SELECT now(), user(), version(); -- 创建库 CREATE DATABASE[ IF NOT EXISTS] 数据库名 数据库选项 -- 数据库选项 CHARACTER SET charset_name COLLATE collation_name -- 查看已有库 SHOW DATABASES[ LIKE 'PATTERN'] -- 查看当前库信息 SHOW CREATE DATABASE 数据库名 -- 修改库的选项信息 ALTER DATABASE 库名 选项信息 -- 删除库 DROP DATABASE[ IF