编码转换

base64编码原理详解

你离开我真会死。 提交于 2020-01-23 21:52:31
首先大原理是进行一系列转换后,根据base64的对应表来加密这个表,下边会展示一下 下面详细介绍一下 base64原理 如果不知道下面什么是Ascii码,那……………………百度一下吧 以“s13”的加密举例: 首先要把即将被加密的文字的每个ascii码写出来: s对应的ascii码是115,1对应的是49,3是51 对应的ascii码: 115 ,49, 51 对应的8位2进制: 01110011 ,00110001,00110011 将三个8bit换成4个6bit的高位补0: 于是得到: 00 011100 , 00 110011, 00 000100,0 0 110011 新的十进制: 28,51,4,51 接下来就根据新的base64表得到 c-28 z-51 E-4 得到 czEz 这里注意大小写,加密原理大概是这样,然后还有一个疑问就是 如果字母字数不够3的倍数怎么办; 比如只有:s 二进制: 01110011 转换为6个一组高位补0发现会不够4的倍数 所以转换成了如此: 011100, 110000(不够6个所以补0),00 000000,00 000000 然后只有第一个,第二个是正常的base64表的字母,剩下的位置(红色位置)因为没有实际影响,所以转换为= 即加密后的密文为 cw== 两个字母时就有一个=号 ,可以自行尝试一下 ss ---> c3M=

jsp中文传递到后台变成乱码

好久不见. 提交于 2020-01-23 13:13:00
一、对传递过来的参数进行编码转换 key= new String(key.getBytes("ISO-8859-1"),"UTF-8"); 其中ISO-8859-1是tomcat默认的编码类型 缺点:当服务器的编码改成GBK 该方法就会失去作用 当然改成 key= new String(key.getBytes("GBK"),"UTF-8"); 二、修改服务器 (tomcat 的编码 ) server.xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URLEncoding=UTF8 /> 缺点:当tomcat编码进行修改 又会出现问题 一、 二、共同的缺点就是依赖于Tomcat的编码环境 三、先将中文进行编码后再传递(推荐) 1 、 Js 方式: 需要进行两次编码 客户端     Var key= encodeURI(”中中”); Key= encodeURI(key); 服务器端 因为服务器端在获取客户端传递过来的参数时已经进行了一次解码 所以我们自己只需解一次码就行了 java.net.URLDecoder. decode( 传过来的参数 ) ; 2 、利用 Struts2 的 <s:a> 标签 <s:a action=””> <s

编码的简单总结

被刻印的时光 ゝ 提交于 2020-01-23 01:06:29
说明 下面对于各种编码分类并不完全对,仅仅为了便于比较总结记忆 编码的前缀也不是严格非要那样,为了在碰到时,或许可以一眼看出这是哪种编码 对于编码方式没有详细解释,只是简短的大概说明,关于编码具体过程,网上有很多资料 utf编码有大小端的问题 https://blog.csdn.net/byf0521hlyp/article/details/80365045 base家族 https://blog.csdn.net/lili13897741554/article/details/82177472 字符及网络上常用编码 编码 目的 前缀或特点 编码形式 常见或特殊记忆 url编码 对ascii中的一些可打印字符进行编码 前缀% 以%为前缀,其后是字符的两16进制的ascii码 %20空格 %00空字节 %25百分号 +也代表url的空格 html编码 为在html文档中安全的使用某些字符 &或&#或&#x 后跟字符10进制的ascii码,&#x为前缀,后跟字符的16进制的ascii码 "为&quot或&#34或&#x22 >为&gt <为&lt 16进制编码 对二进制数据进行16进制编码 base64 对二进制数据进行编码,用来将非ASCII字符的数据转换成ASCII字符 末尾经常出现= 大写字母A~Z,小写字母a~z,数字0~9以及"+","/"及用来填充的= base32

栅格数据的编码方法

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-22 22:57:36
直接栅格编码 直接编码就是将栅格数据看作一个数据矩阵, 逐行(或逐列)逐个记录代码 ,可以每行从左到右逐像元记录,也可奇数行从左到右而偶数行由右向左记录,为了特定的目的还可采用其他特殊的顺序。 链式编码 链式编码又称为弗里曼链码(Freeman,1961)或边界链码。 链式编码主要是记录线状地物和面状地物的边界。 它把线状地物和面状地物的边界表示为:由某一起始点开始并按某些基本方向确定的单位矢量链。基本方向可定义为:东=0,东南=l,南=2,西南=3,西=4,西北=5,北=6,东北=7等八个基本方向。 链式编码的前两个数字表示起点的行、列数,从第三个数字开始的每个数字表示单位矢量的方向,八个方向以0—7的整数代表。 链式编码对线状和多边形的表示具有很强的数据压缩能力,且具有一定的运算功能,如面积和周长计算等,探测边界急弯和凹进部分等都比较容易,类似矢量数据结构,比较适于存储图形数据。 缺点是对叠置运算如组合、相交等则很难实施,对局部修改将改变整体结构,效率较低,而且由于链码以每个区域为单位存储边界,相邻区域的边界则被重复存储而产生冗余。 游程长度编码 游程长度编码是栅格数据压缩的重要编码方法,它的基本思路是:对于一幅栅格图像,常常有行(或列)方向上相邻的若干点具有相同的属性代码,因而可采取某种方法压缩那些重复的记录内容。其编码方案是,只在各行(或列

字符集与编码--Java class文件的编码方式

╄→гoц情女王★ 提交于 2020-01-22 22:20:21
1 public static void main(String[] args) throws UnsupportedEncodingException { 2 /** 3 * 1. char 和 String 在内存中保存都使用Java内码,也即UTF-16 4 * 2. char 在class文件中使用UTF-16表示 5 * 3. String在class文件中使用UTF-8表示 6 * 4. 序列化和Class文件中用"modified UTF-8",不是UTF-8。参考https://docs.oracle.com/javase/7/docs/api/java/io/DataInput.html#modified-utf-8 7 * 8 * 5. 问题:内存存储的是UTF-16编码的字节,那么String.getBytes("UTF-8")应该是从UTF-16到UTF-8的转换过程 9 * 解答:String.getBytes()是一个用于将String的内码转换为指定的外码的方法(问题中UTF-8就是指定的外码)。 10 * 无参数版使用平台的默认编码作为外码,有参数版使用参数指定的编码作为外码。 11 * 将String的内容用外码编码好,结果放在一个新byte[]返回。 12 * 13 * 14 * @date 2020/1/17 15 * @return 16 *

URL中文编码与文本中文编码的关系

為{幸葍}努か 提交于 2020-01-22 15:19:58
写在前面: 系统环境:Windows 10 软件环境:360急速浏览器11.0,内核版本69(基于Chromium) URL在浏览器中编码 在使用爬虫过程中,我们常常要对URL地址进行处理:在发包时对字符串进行编码;在接收数据时,对参数进行解码。由于现在常见的浏览器已经都对URL中的字符进行了解码,因此在使用浏览器时,地址栏中已经做到了正常中文字符 通过浏览器的调试工具,能够查看到在网络上编码传输的地址 由此可以发现: 中文字符 编码字符 除 %E9%99%A4 夕 %E5%A4%95 正常显示的中文字符,编码后转换为一串由 %+字母/数字 的字符串,在这个字符串中的 百分号(%) 是浏览器作为字符边界的一个标志, 字符/数字 的组合是UTF-8格式下的汉字对应的编码。 Unicode字符集与UTF-8编码规则 在查找对应码表之前,需要先明确一下,Unicode与UTF-8这个两个常见名词的关系。 Unicode:统一码、万国码。是计算机科学领域里的一项业界标准, 包括字符集、编码方案等 。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了 统一并且唯一 的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。 UTF-8:是针对Unicode的一种 可变长度字符编码 。它可以用来表示Unicode标准中的任何字符

字符乱码之字符集和字符编码

戏子无情 提交于 2020-01-22 10:52:52
最近经常会碰到上传客户提供的历史数据上传时csv文件用Excel打开时会有乱码问题,虽然知道知道是字符编码不一致导致的,但其中诸多细节却知之甚少,今日特来理理。 1.为什么会有字符乱码问题?如何解决字符乱码问题 计算机中存储的信息都是二进制数表示的,但是世界上有各种不同的语言文字,所以我们需要 一些规则 将各种字符转换成二进制后存储在计算机中 即编码,以及如果将存储在计算机中的二进制数解析出来即解码。就如破译电报密码一样如果密码本是错误的,那么密码也是错误。会有字符乱码问题就是因为解码方式是不对的,要解决乱码问题一定要知道字符编码是什么 扫盲知识点: 字符集(Charset):是一个系统支持的所有抽象字符的集合,字符是各种文字和符号的总称,包括各种国家文字,标点符号,图形符号,数字 字库表:它存储了编码规范中的所有字符,计算机通过计算机就是根据二进制数从字库表中找到字符然后显示给用户滴,相当于一个存储字符的数据库 字符集和字库表一一对应,相互转换,这是电脑识别字符的关键 字符编码(Charater Encoding):是一套法则,使字符集中的自然语言字符(字符集)转换成计算集可以接受的数字代码。 字符解码:二进制数从字库表中找到字符然后显示给用户 字符集和字符编码的关系: 字符集其实是一套编码规范中的子概念,为了显示字符,世界组织就制定了编码规范

Kaggle学习笔记——Categorical Variables

隐身守侯 提交于 2020-01-22 06:21:56
Kaggle学习笔记--Categorical Variables 简介 数据准备 步骤1:删除包含分类数据的列 步骤2:标签编码 步骤3:统计基数 步骤4:一键编码 kaggle课程连接 https://www.kaggle.com/learn/intermediate-machine-learning . 简介 本次练习介绍三种处理数据中的分类变量(即类型为object的变量)的方法。 方法一、删除分类变量 处理分类变量的最简单方法是从数据集中删除它们。仅当列中没有有用的信息时,此方法才能很好地工作。 方法二、标签编码 标签编码将每个唯一值分配给不同的整数。 此方法假定以下类别的排序:“从不”(0)<“很少”(1)<“大多数日子”(2)<“每天”(3)。在本示例中,这种假设是有意义的,因为对类别的排名无可争议。并非所有类别变量的值都具有明确的顺序,但是我们将其称为序数变量。 对于基于树的模型(例如决策树和随机森林),可以期望标签编码可以与序数变量一起很好地工作。 方法三、一键编码 一键编码会创建新列,以指示原始数据中每个可能值的存在(或不存在)。 为了理解这一点,我们将通过一个示例进行研究。 在原始数据集中,“颜色”是具有三个类别的类别变量:“红色”,“黄色”和“绿色”。对应的一键编码在原始数据集中包含一列用于每个可能的值,并且在每一行中包含一行。无论原始值为“红色”

字符、字节和编码

隐身守侯 提交于 2020-01-22 01:57:48
  摘要: 介绍了字符与编码的发展过程,相关概念。举例Java实际应用中,编码的实现方法。最后,讲述了通常对字符与编码的几种误解,由于这些误解而导致乱码产生的原因,以及消除乱码的方法。 1.编码问题的由来及相关概念 1.1字符与编码的发展    从计算机对多国语言的支持角度看,大致可以分为三个阶段: 系统内码 说明 系统 阶段一 ASCII 计算机刚开始只支持英语,其它语言不能够在计算机上存储和显示 英文DOS 阶段二 ANSI编码(本地化) 为使计算机支持更多语言,通常使用0x80~0xFF范围的2个字节来表示1个字符。比如:汉字‘中’在中文操作系统中,使用[0x06,0xD0]这两个字节存储。 不同的国家和地区制定了不同的标准,由此产生了GB2312、BIG5、JIS等各自编码标准。这些使用2个字节来代表一个字节来代表一个字符的各种汉字延伸编码方式,成为 ANSI编码 。在简单中文系统下,ASNI编码代表GB2312编码,在日文操作系统下,ANSI编码代表JIS编码。 不同ANSI编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段ANSI编码的文本中。 中文DOS,中文Windows95/98,日文Windows95/98 阶段三 UNICODE(国际化) 为了使国际间信息交流更加方便,国际组织制定了UNICODE字符集

python入门:字符编码

↘锁芯ラ 提交于 2020-01-21 15:34:44
字符编码 字符编码:字符----编码(字符编码表)---->二进制 目前内存中使用的统一是unicode,编码和解码对应了相应的字符集 保证不乱码的关键: 1.字符当初以什么编码存放的, 就应该以什么编码解码。 当存储的时候字符编码不对的时候,内存会存放错误的二进制,那么取出来的时候,无论以什么办法取,都是乱码 2.在python2中解释器默认使用的编码是ASCII码,python3默认使用的是UTF-8 在python文件头上插入: #coding:utf-8 修改python解释器的编码格式 #这个是读取的时候用什么编码(pycharm读取是什么编码,写入就是什么编码,比较方便。) 3.目前很多软件默认编码是UTF-8,windows上默认的是GBK,选择好字符集非常重要 #python程序在windows cmd上可以出结果,但是python2显示乱码,是因为cmd是gbk,python2是utf-8 #如果想在python2也使用python3一样的将代码转换成unicode,在代码将加入一个u a=u'丁' #赋值丁给a,存入内存为unicode,这样所有的平台都不会乱码了 更详细请看: https://www.cnblogs.com/linhaifeng/articles/5950339.html 来源: https://www.cnblogs.com/dinghc/p