编码转换

Android 中的编码与解码

别说谁变了你拦得住时间么 提交于 2020-03-28 07:46:12
前言:今天遇到一个问题,一个用户在登录的时候,出现登录失败。但是其他用户登录都是正常的,经过调试发现登录失败的用户的密码中有两个特殊字符: * 、# 。 特殊符号在提交表单的时候,出现了编码不一样的问题。那么编码是什么鬼?? 1、 什么是application/x-www-form-urlencoded字符串? 它是一种编码类型。 当URL地址里包含非西欧字符的字符串时,系统会将这些字符转换成application/x-www-form-urlencoded字符串。 表单提交时也是如此,当包含非西欧字符的字符串时,系统也会将这些字符转换成application/x-www-form-urlencoded字符串。 package com.app; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; public class AA { public static void main(String[] args) { /** * 将application/x-www-form-urlencoded字符串 转换成普通字符串 */ String keyWord = ""; try { keyWord = URLDecoder.decode("

[转]Base64 算法原理,以及编码、解码【加密、解密】 介绍

独自空忆成欢 提交于 2020-03-27 20:15:13
Base64编码,是我们程序开发中经常使用到的编码方法。它是一种基于用64个可打印字符来表示二进制数据的表示方法。它通常用作存储、传输一些二进制数据编码方法!也是MIME(多用途互联网邮件扩展,主要用作电子邮件标准)中一种可打印字符表示二进制数据的常见编码方法!它其实只是定义用可打印字符传输内容一种方法,并不会产生新的字符集!有时候,我们学习转换的思路后,我们其实也可以结合自己的实际需要,构造一些自己接口定义编码方式。好了,我们一起看看,它的转换思路吧! Base64实现转换原理 它是用64个可打印字符表示二进制所有数据方法。由于2的6次方等于64,所以可以用每6个位元为一个单元,对应某个可打印字符。我们知道三个字节有24个位元,就可以刚好对应于4个Base64单元,即3个字节需要用4个Base64的可打印字符来表示。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9 ,这样共有62个字符,此外两个可打印符号在不同的系统中一般有所不同。但是,我们经常所说的Base64另外2个字符是:“+/”。这64个字符,所对应表如下。 编号 字符 编号 字符 编号 字符 编号 字符 0 A 16 Q 32 g 48 w 1 B 17 R 33 h 49 x 2 C 18 S 34 i 50 y 3 D 19 T 35 j 51 z 4 E 20 U 36 k 52 0 5 F 21

1.2、字符串和编码

本小妞迷上赌 提交于 2020-03-27 13:33:52
1、ASCLL:一个字节(8比特)表示一个字符:没有中文 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 0 NUT 32 (space) 64 @ 96 、 1 SOH 33 ! 65 A 97 a 2 STX 34 " 66 B 98 b 3 ETX 35 # 67 C 99 c 4 EOT 36 $ 68 D 100 d 5 ENQ 37 % 69 E 101 e 6 ACK 38 & 70 F 102 f 7 BEL 39 , 71 G 103 g 8 BS 40 ( 72 H 104 h 9 HT 41 ) 73 I 105 i 10 LF 42 * 74 J 106 j 11 VT 43 + 75 K 107 k 12 FF 44 , 76 L 108 l 13 CR 45 - 77 M 109 m 14 SO 46 . 78 N 110 n 15 SI 47 / 79 O 111 o 16 DLE 48 0 80 P 112 p 17 DCI 49 1 81 Q 113 q 18 DC2 50 2 82 R 114 r 19 DC3 51 3 83 S 115 s 20 DC4 52 4 84 T 116 t 21 NAK 53 5 85 U 117 u 22 SYN 54 6 86 V 118 v 23 TB 55 7

Python线性数据结构

别说谁变了你拦得住时间么 提交于 2020-03-27 02:37:47
python线性数据结构 目录 1 线性数据结构 2.内建常用的数据类型 2.1 数值型 2.2 序列(sequence) 2.2.1 list 列表 2.2.2 tuple 元组 2.2.3 string 字符串 2.2.4 bytes 字节 2.2.5 bytearray 字节数组 <center>码好python的每一篇文章.</center> 1 线性数据结构 本章要介绍的线性结构:list、tuple、string、bytes、bytearray。 线性表:是一种抽象的数学概念,是一组元素的序列的抽象,由有穷个元素组成(0个或任意个)。 线性表又可分为 顺序表和链接表。 顺序表:一组元素在内存中有序的存储。列表list就是典型的顺序表。 链接表:一组元素在内存中分散存储链接起来,彼此知道连接的是谁。 对于这两种表,数组中的元素进行查找、增加、删除、修改,看看有什么影响: 查找元素 对于顺序表,是有序的在内存中存储数据,可快速通过索引编号获取元素,效率高。。 对于链接表是分散存储的,只能通过一个个去迭代获取元素,效率差。 增加元素 对于顺序表,如果是在末尾增加元素,对于整个数据表来说没什么影响,但是在开头或是中间插入元素,后面的所有元素都要重新排序,影响很大(想想数百万或更大数据量)。 对于链接表,不管在哪里加入元素,不会影响其他元素,影响小。 删除元素 对于顺序表

redis中的数据结构和编码

≡放荡痞女 提交于 2020-03-27 02:14:36
3 月,跳不动了?>>> redis中的数据结构和编码: 背景: 1>redis在内部使用redisObject结构体来定义存储的值对象。 2>每种类型都有至少两种内部编码,Redis会根据当前值的类型和长度来决定使用哪种编码实现。 3>编码类型转换在Redis写入数据时自动完成,这个转换过程是不可逆的,转换规则只能从小内存编码向大内存编码转换。 源码: 值对象redisObject: typedef struct redisObject { unsigned type:4; /* 对象类型 */ unsigned encoding:4; /* 内部编码 */ unsigned lru:LRU_BITS; /* lru time (relative to server.lruclock) */ int refcount; /* 引用计数器,内存回收机制就是基于该值实现的 */ void *ptr; /* 若要存储的是整数值则直接存储数据,否则表示指向数据的指针 */ } robj; 类型type: 说明:查看当前键的类型:type key #define OBJ_STRING 0 /*字符串对象*/ #define OBJ_LIST 1 /*列表对象*/ #define OBJ_SET 2 /*集合对象*/ #define OBJ_ZSET 3 /*有序集合对象*/ #define

Python线性数据结构

倖福魔咒の 提交于 2020-03-27 02:14:02
3 月,跳不动了?>>> python线性数据结构 [TOC] <center>码好python的每一篇文章.</center> 1 线性数据结构 本章要介绍的线性结构:list、tuple、string、bytes、bytearray。 线性表:是一种抽象的数学概念,是一组元素的序列的抽象,由有穷个元素组成(0个或任意个)。 线性表又可分为 顺序表和链接表。 顺序表:一组元素在内存中有序的存储。列表list就是典型的顺序表。 链接表:一组元素在内存中分散存储链接起来,彼此知道连接的是谁。 对于这两种表,数组中的元素进行查找、增加、删除、修改,看看有什么影响: 查找元素 对于顺序表,是有序的在内存中存储数据,可快速通过索引编号获取元素,效率高。。 对于链接表是分散存储的,只能通过一个个去迭代获取元素,效率差。 增加元素 对于顺序表,如果是在末尾增加元素,对于整个数据表来说没什么影响,但是在开头或是中间插入元素,后面的所有元素都要重新排序,影响很大(想想数百万或更大数据量)。 对于链接表,不管在哪里加入元素,不会影响其他元素,影响小。 删除元素 对于顺序表,删除元素和增加元素有着一样的问题。 对于链接表,不管在哪里删除元素,不会影响其他元素,影响小。 修改元素 对于顺序表,可快速通过索引获取元素然后进行修改,效率高。 对于链接表,只能通过迭代获取元素然后进行修改,效率低。 总结

url中向后台传递中文乱码解决方法

寵の児 提交于 2020-03-25 21:40:20
方法一: 1、jsp中代码   var userNo = $('#prisoner_id').val(); userNo = encodeURI(userNo); allPrisonerGrid.datagrid('options').url = 'mobilemanage!allPrisonerPage.action?test=' + userNo; allPrisonerGrid.datagrid('reload'); 2、action中代码   String userNo = "";   try {   userNo = URLDecoder.decode(request.getParameter("test"),"utf-8");   if(!"".equals(userNo)){ mobileManage.setUserNo(userNo); } } catch (UnsupportedEncodingException e) {     e.printStackTrace(); } 方法二: 假设我们页面中拥有一个输入框、一个提交按钮,当我们点击提交按钮时获取输入框中用户输入的值,然后利用URL传递参数的方式,将输入框的值传递到后台。我们假设后台对应web层处理技术使用Struts2的Action进行数据处理,假设Action中处理数据的URL为/say

python3 unicod,utf-8,gbk的编码和解码中文显示问题

微笑、不失礼 提交于 2020-03-25 21:29:05
python3的字符编码让人头疼。 这个也不是一篇介绍gbk, utf-8, unicode怎么表示英文,中文字符的基础知识总结。 网上有很多类似的文章,目前也不需要升入学习到了解各个bit位表示什么含义。 目的: 清楚了解为什么在python3不同的编码,解码,windows,linux操作系统下,字符是否能够正确显示。 前提: 了解不同编码用不同的二级制编码和长度来表示字符。 在python3中,各种字符编码之间的互相转换都要通过unicode作为中间编码转换。gbk转换成unicode,再从unicode转换成utf-8。 分析: 要区分4种编码解码概念, 1.编写代码文件时的编码。 notepad++ 在菜单“编码”中有选择,在状态栏可以看到编码类型。 pycharm 在菜单"file","editor","file encoding"中可以设置默认编码。在状态栏可以看到编码类型。 2.python3代码中申明的解码格式。 在代码中#coding=gbk。 编码声明告诉了python编译器以什么格式的编码来解码.py文件,它不会改变系统默认编码和本地默认编码, 也不是用于声明当前代码文件的编码格式的,而是声明当前代码文件的解码方式。换句话说, 代码文件的编码格式取决于你使用的编辑器,而如何解码该文件取决于文件头处的编码声明。 一般地,编码格式应当与解码格式一致

ThinkPHP5做微信开发,微信昵称带有表情,无法保存进数据库问题。

删除回忆录丶 提交于 2020-03-25 15:41:43
在一次微信开发中,出现了用户无法注册的问题,后来排查发现,是用户的昵称中带有表情,无法存进mysql数据库(mysql使用的是utf-8编码)。 在网上查询有以下几种解决方案: 1、把昵称在保存进数据库前,进行编码转换。 2、(1)把数据库中昵称的字段改为utf8mb4 (2)把tp5的数据库配置文件中的数据库默认编码(charset),有utf-8改为 utf8mb4。 后来使用的是第2种方法解决,第一种方法按道理说也可以解决。 来源: https://www.cnblogs.com/jianzhen/p/10242653.html

python中遇到的错误

做~自己de王妃 提交于 2020-03-25 12:22:02
3 月,跳不动了?>>> “IndentationError”表示缩进错误,遇到的类型有下面几个: Indentation Error: expected an indented block Indentation Error: unexpected indent Indentation Error: unindent does not match any outer indentation level 解决的办法大都是在出现错误的那一行,按Tab或空格(但不能混用)键缩进即可。 “Index Error”表示索引错误,遇到的类型有如下: IndexError: array index out of range "KeyError:"使用dict[key]时出现的错误,出现这种情况,最好使用dict.get(key)来检查dict中是否含有目标值,如果返回none的话,就是没有目标键的值。 "TypeError"遇到的情况如下: TypeError:'unicode' object is not callable 出现这样的报错,是程序将字符串当作函数使用了。 “UnicodeEncodeError”说明编码有问题 UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: