编码转换

前端需要知道的安全知识

点点圈 提交于 2020-02-15 15:33:08
1. XSS(跨站脚本) 黑客往网页里注入恶意脚本代码 当用户访问时获取到包含恶意代码的网页 通过恶意脚本,黑客可以获取和控制用户信息 1.1 反射型(非持久型)XSS 诱导用户点击恶意链接来造成一次性攻击 黑客把带有恶意脚本代码参数的URL地址发送给用户 用户点击此链接 服务器端获取请求参数并且直接使用,服务器反射回结果页面 反射型XSS攻击是一次性的,必须要通过用户点击链接才能发起 一些浏览器如铬其内置了一些XSS过滤器,可以防止大部分反射型XSS攻击 反射型XSS其实就是服务器没有对恶意的用户输入进行安全处理就直接反射响应内容,导致恶意代码在浏览器中执行的一种XSS漏洞 const express = require('express'); const fs = require('fs'); const path = require('path'); const app = express(); const bodyParser = require('body-parser'); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); app.use(express.static(path.resolve(__dirname, 'public'))); //http:/

python基础学习浅学二进制,字符串(bytes,bytearray,string)

╄→гoц情女王★ 提交于 2020-02-15 09:41:39
一,二进制 二进制中只有两个可能的数:1和0 二进制中,1个1或0叫一’位’(bit) 8位能表示的最小数是0,8位都是0;最大数是255,8位都是1。 十进制逢十进一;二进制逢二进一,记零 1.二进制换十进制: 从右往左:1,2,4,8…分别从右往左对应2的n次方。如2的0次方,2的1次方,2的2次方… 从左往右分别对应相乘再相加即为十进制。 十进制换二进制: 如:25 一直除以2,每次的余数倒序读即此十进制的二进制。 2.二进制里,1kb=2^10=1024个字节 1000也是千字节(kb)的正确单位,1000和1024都对 kb mb gb 分别对应 千字节 兆字节 千兆字节 3.计算机中正数和负数表示方式 0是正,1是负(1开头代表负数,0开头代表正数)。 总共是32位的二进制,其中一位表示正数负数,剩下31位表示数字。 不够用,引入64位使用,第一位表示正负,剩余63位表示数字。 用科学计数法表示十进制,处理非整数。 value=sign exponent sighificand 符号位 指数值 有效位数 举例:114.9可以写成0.1149* 10 ^ 3 。1149叫做有效位数,1代表指数。 在32位浮点数中,第一位表示数字正负。后面八位存指数,剩下23位存有效数字 4.把字符串转换为字节的方法:ASCII,Unicode,UTF-8,gbk(中文编码格式)

JavaSE--jdom解析之bom

天大地大妈咪最大 提交于 2020-02-15 06:23:27
参考: http://www.cnblogs.com/findumars/p/3620078.html 1 org.jdom2.input.JDOMParseException: Error on line 1: Content is not allowed in prolog. 2 13:15:55,821 [main] ERROR SajtSvrImpl:182 - 未知:org.jdom2.input.JDOMParseException: Error on line 1: Content is not allowed in prolog. 3 at org.jdom2.input.sax.SAXBuilderEngine.build(SAXBuilderEngine.java:232) 4 at org.jdom2.input.SAXBuilder.build(SAXBuilder.java:1065) UTF-8 不需要 BOM,尽管 Unicode 标准允许在 UTF-8 中使用 BOM。 所以 不含 BOM 的 UTF-8 才是标准形式, 在 UTF-8 文件中放置 BOM 主要是微软的习惯 (顺便提一下: 把带有 BOM 的小端序 UTF-16 称作「Unicode」而又不详细说明,这也是微软的习惯 )。 BOM(byte order mark)是为 UTF-16

文件处理

纵然是瞬间 提交于 2020-02-15 05:42:25
目录 一、字符编码 1.1计算机基础   1.2文本编译器存取文件的原理   1.3Python解释器执行py文件的原理   1.4 Python解释器与文本编译的异同   1.5 字符编码介绍     1.5.1 什么是字符编码     1.5.2 涉及到字符编码的两个场景     1.5.3 字符编码发展史与分类     1.5.4内存为什么不用UTF-8呢?     1.5.5 字符编码之文本编译器操作     1.5.6 乱码分析   1.6总结 二、Python2和3字符编码的区别   2、1 字符编码应用之Python   2、1、1 执行Python程序的三个阶段   2、2 Python2与Python3字符串类型的区别   2、2、1 Python2 三、 基本的文件操作   3、1 什么是文件?   3、2 为什么要有文件?   3、3 如何用文件?   3、4 总结 四、绝对路径和相对路径   4、1 绝对路径   4、2 相对路径 五、文件的三种打开方式   5、1 文件打开模式之r模式   5、2 文件打开模式之w模式   5、3 文件打开模式之a模式   5、4 文件打开读取二进 六、with管理文件操作上下文 七、文件的高级应用 八、文件修改的两种方式   8、1 方式一   8、2 方式二 一、字符编码 1.1计算机基础 CPU:控制程序的运行

UTF8文件带BOM引起的问题

时光怂恿深爱的人放手 提交于 2020-02-14 16:37:34
起因是公司iOS端竟然加载出来了HTML代码,百思不得其解,查文献,原来如此... UTF-8 不需要 BOM,尽管 Unicode 标准允许在 UTF-8 中使用 BOM。 所以 不含 BOM 的 UTF-8 才是标准形式, 在 UTF-8 文件中放置 BOM 主要是微软的习惯 (顺便提一下: 把带有 BOM 的小端序 UTF-16 称作「Unicode」而又不详细说明,这也是微软的习惯 )。 BOM(byte order mark)是为 UTF-16 和 UTF-32 准备的,用于标记字节序(byte order) 。 微软在 UTF-8 中使用 BOM 是因为这样可以把 UTF-8 和 ASCII 等编码明确区分开,但这样的文件在 Windows 之外的操作系统里会带来问题。 「UTF-8」和「带 BOM 的 UTF-8」的区别就是有没有 BOM。即文件开头有没有 U+FEFF。 UTF-8 的网页代码不应使用 BOM,否则常常会出错。这是一个小例子: 为什么这个网页代码 <head> 内的信息会被浏览器理解为在 <body> 内? 另附《The Unicode Standard, Version 6.0》之 3.10 D95 UTF-8 encoding scheme 的一段话: While there is obviously no need for a byte

Python乱码、编码问题汇总

ぐ巨炮叔叔 提交于 2020-02-14 16:36:29
为什么Python使用过程中会出现各式各样的乱码问题,明明是中文字符却显示成“\xe4\xb8\xad\xe6\x96\x87”的形式? 为什么会报错“U nicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)”?本文就来研究一下这个问题。 字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。 decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。 encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。 因此, 转码的时候一定要先搞明白,字符串str是什么编码,然后decode成unicode,然后再encode成其他编码 代码中字符串的默认编码与代码文件本身的编码一致。 如:s='中文' 如果是在utf8的文件中

【STM32H7教程】第52章 STM32H7的LTDC应用之点阵字体和字符编码(重要)

﹥>﹥吖頭↗ 提交于 2020-02-14 14:49:04
完整教程下载地址: http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第52章 STM32H7的LTDC应用之点阵字体和字符编码(重要) 本章节主要为大家讲解ASCII字符集,ASCII扩展字符集,GB2312字符集,GBK字符集和Unicode字符集。其中,字符编码这块涉及到的知识点非常多,特别是Unicode字符集的编码,涉及到的知识点极其多。大家如果有精力的话,最好可以花点时间把Unicode的发展史捋清楚了。本章节笔者能够做的是把相关的知识点告诉大家,让大家有一个全面的认识。 52.1 初学者重要提示 52.2 编码基础知识 52.3 汉字点阵原理 52.4 总结 52.1 初学者重要提示 本章节讲解的GB2312和GBK比较容易理解,而Unicode是全球统一码,所以涉及到的知识点比较多,也复杂些。 当前Windows系统字符管理已经全部采用Unicode字符集,编码形式是UTF-16 LE (LE表示小端格式)编码。比如我们通过记事本保存的时候选择编码类型Unicode,其实就是选择的UTF-16 LE。而我们平时所说的中文版Windows系统是指用户在选择不支持Unicode的程序中显示文本时所使用的语言。 区分清楚什么是字符,字符集。字符(Character)是各种文字和符号的总称,包括各国家文字

关于BOM UTF8

烈酒焚心 提交于 2020-02-14 00:19:41
这三篇可以看下: http://www.zhihu.com/question/20167122 http://www.cnblogs.com/DDark/archive/2011/11/28/2266085.html https://segmentfault.com/a/1190000004321605 UTF-8 不需要 BOM,尽管 Unicode 标准允许在 UTF-8 中使用 BOM。 所以 不含 BOM 的 UTF-8 才是标准形式, 在 UTF-8 文件中放置 BOM 主要是微软的习惯 (顺便提一下: 把带有 BOM 的小端序 UTF-16 称作「Unicode」而又不详细说明,这也是微软的习惯 )。 BOM(byte order mark)是为 UTF-16 和 UTF-32 准备的,用于标记字节序(byte order) 。 微软在 UTF-8 中使用 BOM 是因为这样可以把 UTF-8 和 ASCII 等编码明确区分开,但这样的文件在 Windows 之外的操作系统里会带来问题。 「UTF-8」和「带 BOM 的 UTF-8」的区别就是有没有 BOM。即文件开头有没有 U+FEFF。 UTF-8 的网页代码不应使用 BOM,否则常常会出错。这是一个小例子: 为什么这个网页代码 <head> 内的信息会被浏览器理解为在 <body> 内? 另附《The

Unicode字符编码规范

半世苍凉 提交于 2020-02-13 07:47:46
http://www.aoxiang.org 2006-4-2 10:48:02 Unicode是一种字符编码规范 。   先从ASCII说起。ASCII是用来表示英文字符的一种编码规范,每个ASCII字符占用1个字节(8bits)   因此,ASCII编码可以表示的最大字符数是256,其实英文字符并没有那么多,一般只用前128个(最高位为0),其中包括了控制字符、数字、大小写字母和其他一些符号 。   而最高位为1的另128个字符被成为“扩展ASCII”,一般用来存放英文的制表符、部分音标字符等等的一些其他符号,这种字符编码规范显然用来处理英文没有什么问题。(实际上也可以用来处理法文、德文等一些其他的西欧字符,但是不能和英文通用),但是面对中文、阿拉伯文之类复杂的文字,255个字符显然不够用   于是,各个国家纷纷制定了自己的文字编码规范,其中中文的文字编码规范叫做“GB2312-80”,它是和ASCII兼容的一种编码规范,其实就是利用扩展ASCII没有真正标准化这一点,把一个中文字符用两个扩展ASCII字符来表示。   但是这个方法有问题,最大的问题就是,中文文字没有真正属于自己的编码,因为扩展ASCII码虽然没有真正的标准化,但是PC里的ASCII码还是有一个事实标准的(存放着英文制表符),所以很多软件利用这些符号来画表格。这样的软件用到中文系统中

赫夫曼编码

倾然丶 夕夏残阳落幕 提交于 2020-02-12 13:30:13
赫夫曼编码用于数据文件的压缩,压缩率在20%~90%之间,称之为最佳编码 将原始数据转换为ASCII编码后再转二进制属于定长编码 同样数据使用变长编码,按照各个字符出现次数进行编码,出现次数越多则编码越小(字符的编码都不能是其他字符编码的前缀,这样的编码叫做前缀编码),从而实现数据的压缩 步骤:和创建赫夫曼树一样,其数据重复出现的次数作为权值,向左的路径为0,向右的路径为1,采取不一样的排序方式,编码也是不一样的,但是最后WPL是相同的,都是最小 理论上来说赫夫曼编码的压缩率重复数据出现的越多压缩率则越高,相反次之 import java.io.*; import java.util.*; public class HuffmanCode { public static void main(String[] args) { String content = "i like like like java do you like a java"; byte[] contentBytes = content.getBytes(); byte[] huffmanCodesBytes = huffmanZip(contentBytes); // System.out.println(Arrays.toString(huffmanCodesBytes) + " " +