- 奇石珠宝真君
-
form有2中方法把数据提交给服务器,get和post,分别说下吧。
(一)get提交
1.首先说下客户端(浏览器)的form表单用get方法是如何将数据编码后提交给服务器端的吧。
对于get方法来说,都是把数据串联在请求的url后面作为参数,如:http://localhost:8080/servlet?msg=abc
(很常见的一个乱码问题就要出现了,如果url中出现中文或其它特殊字符的话,如:http://localhost:8080//servlet?msg=杭州,服务器端容易得到乱码),url拼接完成后,浏览器会对url进行URL encode,然后发送给服务器,URL encode的过程就是把部分url做为字符,按照某种编码方式(如:utf-8,gbk等)编码成二进制的字节码,然后每个字节用一个包含3个字符的字 符串 "%xy" 表示,其中xy为该字节的两位十六进制表示形式。我这里说的可能不清楚,具体介绍可以看下java.net.URLEncoder类的介绍在这里。了解了 URL encode的过程,我们能看到2个很重要的问题,第一:需要URL encode的字符一般都是非ASCII的字符(笼统的讲),再通俗的讲就是除了英文字母以外的文字(如:中文,日文等)都要进行URL encode,所以对于我们来说,都是英文字母的url不会出现服务器得到乱码问题,出现乱码都是url里面带了中文或特殊字符造成的;第二:URL encode到底按照那种编码方式对字符编码?这里就是浏览器的事情了,而且不同的浏览器有不同的做法,中文版的浏览器一般会默认的使用GBK,通过设置 浏览器也可以使用UTF-8,可能不同的用户就有不同的浏览器设置,也就造成不同的编码方式,所以很多网站的做法都是先把url里面的中文或特殊字符用 javascript做URL encode,然后再拼接url提交数据,也就是替浏览器做了URL encode,好处就是网站可以统一get方法提交数据的编码方式。 完成了URL encode,那么现在的url就成了ASCII范围内的字符了,然后以iso-8859-1的编码方式转换成二进制随着请求头一起发送出去。这里想多说 几句的是,对于get方法来说,没有请求实体,含有数据的url都在请求头里面,之所以用URL encode,我个人觉的原因是:对于请求头来说最终都是要用iso-8859-1编码方式编码成二进制的101010.....的纯数据在互联网上传 送,如果直接将含有中文等特殊字符做iso-8859-1编码会丢失信息,所以先做URL encode是有必要的。
2。服务器端(tomcat)是如何将数据获取到进行解码的。
第一步是先把数据用iso-8859-1进行解码,对于get方法来说,tomcat获取数据的是ASCII范围内的请求头字符,其中的请求url里面带 有参数数据,如果参数中有中文等特殊字符,那么目前还是URL encode后的%XY状态,先停下,我们先说下开发人员一般获取数据的过程。通常大家都是request.getParameter("name")获 取参数数据,我们在request对象或得的数据都是经过解码过的,而解码过程中程序里是无法指定,这里要说下,有很多新手说用 request.setCharacterEncoding("字符集")可以指定解码方式,其实是不可以的,看servlet的官方API说明有对此方 法的解释:Overrides the name of the character encoding used in the body of this request. This method must be called prior to reading request parameters or reading input using getReader().可以看出对于get方法他是无能为力的。那么到底用什么编码方式解码数据的呢,这是tomcat的事情了,默认缺省用的是 iso-8859-1,这样我们就能找到为什么get请求带中文参数为什么在服务器端得到乱码了,原因是在客户端一般都是用UTF-8或GBK对数据 URL encode,这里用iso-8859-1方式URL decoder显然不行,在程序里我们可以直接
Java代码
1. new String(request.getParameter("name").getBytes("iso-8859-1"),"客户端指定的URL encode编码方式")
还原回字节码,然后用正确的方式解码数据,网上的文章通常是在tomcat里面做个配置
Xml代码
1. <Connector port="8080" protocol="HTTP/1.1" maxThreads="150" connectionTimeout="20000" redirectPort="8443" URIEncoding="GBK"/>
这样是让tomcat在获取数据后用指定的方式URL decoder,URL decoder的介绍在这里
(二)post提交
1.客户端(浏览器)的form表单用post方法是如何将数据编码后提交给服务器端的。
在post方法里所要传送的数据也要URL encode,那么他是用什么编码方式的呢?
在form所在的html文件里如果有段<meta http-equiv="Content-Type" content="text/html; charset=字符集(GBK,utf-8等)"/>,那么post就会用此处指定的编码方式编码。一般大家都认为这段代码是为了让浏览器知道用 什么字符集来对网页解释,所以网站都会把它放在html代码的最前端,尽量不出现乱码,其实它还有个作用就是指定form表单的post方法提交数据的 URL encode编码方式。从这里可以看出对于get方法来数,浏览器对数据的URL encode的编码方式是有浏览器设置来决定,(可以用js做统一指定),而post方法,开发人员可以指定。
2。服务器端(tomcat)是如何将数据获取到进行解码的。
如果用tomcat默认缺省设置,也没做过滤器等编码设置,那么他也是用iso-8859-1解码的,但是request.setCharacterEncoding("字符集")可以派上用场。
我发现上面说的tomcat所做的事情前提都是在请求头里没有指定编码方式,如果请求头里指定了编码方式将按照这种方式编码。
相关推荐
encode和decode的区别是什么?
1、意义区别:decode的作用是将二进制数据解码成unicode编码,如str1.decode("utf-8"),表示将utf-8的编码字符串解码成unicode编码。简单的来说:decode就是把二进制数据(bytes)转化成人看的懂得英文或者汉字(decode用的比较多)encode的作用是将unicode编码的字符串编码成二进制数据,如str2.encode("utf-8"),表示将unicode编码的字符串编码成utf-8。2、拼写区别:encode由6个英文组成。decode开头是d英文。扩展资料:DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )Value 代表某个表的任何类型的任意列或一个通过计算所得的任何结果。当每个value值被测试,如果value的值为if1,Decode 函数的结果是then1;如果value等于if2,Decode函数结果是then2;等等。事实上,可以给出多个if/then 配对。如果value结果不等于给出的任何配对时,Decode 结果就返回else 。需要注意的是,这里的if、then及else 都可以是函数或计算表达式。2023-06-30 00:46:001
"encode"和"encrypt"有什么区别?
仅个人理解:encode(编码)、decode(解码):对应编码方式转换的正向和逆向过程,对数据操作时,需要的结果不同,操作方向的概念存在对调的可能。encrypt(加密)、decrypt(解密):对应数据安全处理的加密和解密,对数据操作时,此概念不可对调。2023-06-30 00:46:322
encode是到底什么意思,翻译为什么既编码又是译码,外国人毛病啊
是DNA元素百科全书,搜索的时候要全开大写。ENCODE(DNA元素百科全书)联盟是由国家人类基因组研究所(NHGRI)资助的研究小组的国际合作。ENCODE的目标是在人类基因组中构建全面的功能元件清单,包括在蛋白质和RNA水平上起作用的元件,以及控制基因活跃的细胞和环境的调控元件。The ENCODE Project, 即ENCyclopedia Of DNA Elements,是美国国立人类基因组研究院(US National Human Genome Research Institute,NHGRI)在2003年9月启动的跨国研究项目。该项目旨在解析人类基因组中的所有功能性元件,它是人类基因组计划(Human Genome Project,HGP)完成之后,又一重要的跨国基因组学研究项目。该项目联合了来自美国,英国,西班牙,新加坡和日本的32个实验室的422名科学家的努力,获得了迄今最详细的人类基因组分析数据(他们获得并分析了超过15兆兆字节的原始数据)。研究花费了约300年的计算机时间,对147个组织类型进行了分析,以确定哪些能打开和关闭特定的基因,以及不同类型细胞之间的“开关”存在什么差异。2023-06-30 00:46:571
encode()函数可以检测字符的编码类型?
Python 中的 encode() 函数是 str 类的一种方法,用于将字符串编码为指定的编码。它不会检测字符串的编码。若要检测字符串的编码,可以使用 chardet 等库,这是一种通用字符编码检测器。下面是如何使用 chardet 库检测 Python 中字符串编码的示例:这将打印检测到的字符串编码。请注意,chardet 库并不总是准确的,它返回的结果可能并不总是正确的。或者,您也可以使用 ftfy(为您修复文本)库,该库专门用于修复和规范化文本。它包括一个名为 detect_encoding() 的函数,可用于检测字符串的编码。下面是如何使用此函数的示例:2023-06-30 00:47:401
encode是到底什么意思,翻译为什么既编码又是译码,外国人毛病啊
en是一个前缀,是“使”的意思,比如en-able:使能够,en相当于把名词、形容词等转化为动词。code是密码,与密码有关的有编码和译码,所以encode的解释里有一对反义词,我是这么理解的,希望对你有帮助。2023-06-30 00:48:205
encode是到底什么意思,翻译为什么既编码
en是一个前缀,是“使”的意思,比如en-able:使能够,en相当于把名词、形容词等转化为动词。code是密码,与密码有关的有编码和译码,所以encode的解释里有一对反义词,我是这么理解的,希望对你有帮助。2023-06-30 00:48:471
单词code和encode释义的区别
code有名词和动词形式,encode只有动词形式2023-06-30 00:48:552
spss中encode是什么意思
把字符串以某种格式变成二进制数据存进文件中。根据查询相关信息,spss中encode的意思是把字符串以某种格式变成二进制数据存进文件中。将unicode编码的字符串str2转换成gb2312编码。2023-06-30 00:49:051
encode计划的主要目标是
其长期目标是建立一幅人类基因组内功能元件的综合图。其内容包括基因、基因调控相关的生化区域(例如转录因子结合位点、开放染色质和组蛋白标记物)和转录本异构体。这些标记物在调控基因表达中起到功能性作用,可成为候选性顺式调控元件(cCREs)的相关位点。经过十余年的发展,这项计划已经从人类扩展到了模式生物体,尤其是小鼠。通过ENCODE计划第三阶段的工作,已经分别为人类和小鼠建立起100万个和30万个候选性顺式调控元件注释,成为了生命科学界颇富价值的资源库。ENCODE计划启动于2003年,是在第一幅完成测序的人类基因组序列图之后的又一个大型国际科研项目。那时候,我们对人类基因组的认识还是相当有限的。举个例子说,尽管有5%的基因组已知处于有胎盘哺乳动物的纯化选择之下,我们对于特异性元件的知识,尤其是就非蛋白质编码基因及其调控区域而言,还局限于少数进行了详细研究的基因座。从那时起,ENCODE计划就开始了其雄心勃勃的工作,对人类基因组内的元件进行全面的注释,这些元件包括基因、控制性元件和转录本异构体,后来更是扩展到了对几种模式生物体的基因组进行注释。作图性生化测定完成了对这些基因组生化活性的鉴定,得到了大量的候选性调控元件。2023-06-30 00:49:231
encode 在C++中的用法
C++中encode的用法:说明:encode是用来对url中特殊字符进行编码的。入参:需要进行编码的字符bytes_to_encode ,字符的长度in_len。std::string encode(unsigned char const* bytes_to_encode, unsigned int in_len) { std::string ret; int i = 0; int j = 0; unsigned char char_array_3[3]; unsigned char char_array_4[4];//依次循环处理byte位数,并做移位运算。 while (in_len--) { char_array_3[i++] = *(bytes_to_encode++); if (i == 3) { char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); char_array_4[3] = char_array_3[2] & 0x3f; for(i = 0; (i <4) ; i++) ret += base64_chars[char_array_4[i]]; i = 0; } } if (i) { for(j = i; j < 3; j++) char_array_3[j] = ""; char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); char_array_4[3] = char_array_3[2] & 0x3f; for (j = 0; (j < i + 1); j++) ret += base64_chars[char_array_4[j]]; while((i++ < 3)) ret += "="; }//返回结果 return ret;}2023-06-30 00:49:382
python encode什么意思
Python encode() 方法以 encoding 指定的编码格式编码字符串。errors参数可以指定不同的错误处理方案。语法encode()方法语法:str.encode(encoding="UTF-8",errors="strict")参数encoding -- 要使用的编码,如"UTF-8"。errors -- 设置不同错误的处理方案。默认为 "strict",意为编码错误引起一个UnicodeError。 其他可能得值有 "ignore", "replace", "xmlcharrefreplace", "backslashreplace" 以及通过 codecs.register_error() 注册的任何值。返回值该方法返回编码后的字符串。实例以下实例展示了encode()方法的实例:#!/usr/bin/pythonstr = "this is string example....wow!!!";print "Encoded String: " + str.encode("base64","strict")2023-06-30 00:49:494
Python文件处理里encoding和encode有事区别,bytes类型是什么意思?
建议你用c语言来做个试验,用写二进制bytes的方式写文件,要求记事本打开后能看到中文,做完试验你就对编码理解了2023-06-30 00:50:211
encode(x1,y1,code1)什么意思
没有具体代码 猜不出具体功能encode字面意思是编码; 编码; 转码2023-06-30 00:51:081
pythonencode和decode的区别
encode编码,decode解码相反的两个过程。2023-06-30 00:51:171
Java中URLEncoder.encode和encodeURIComponent的区别
1)encodeURIComponent和decodeURIComponent在前端使用2)URLEncoder.encode和URLDecoder.decode在后台使用知识点:1)encodeURIComponent和URLEncoder.encode的区别在于前者对下面五个符号不编码! %21 " %27 ( %28 ) %29 ~ %7E2)decodeURIComponent和URLDecoder.decode暂时还看不出有何区别解释:前后台交互传输数据的过程中,如果含有!"()~,同样的内容会传输不同的编码结果,但是对方都能解码。在具体应用时,如果有比较前后台编码的逻辑,最好测一下这几个符号。如果编程环境已解决此问题最好,否则就要考虑一下修补之事了。2023-06-30 00:51:351
为什么encode两次
一共就是两个Decode 了,既然要两次Decode,当然就需要两次Encode 了。或许你会问,干 脆只Encode 一次,然后在java 代码里不Decode,呵呵,这个也是 不行的,这其实也就是 一 般 情 况 下 , 发 送 encodeURIComponent(parmeName)+ = +encodeURIComponent(parmeValue); 接收时, 直接 String paramValue = request.getParameter(paramName); // 容器自动解码. 我们知道 encodeURIComponent 使用的是 UTF-8 编码规则来编的. 如果 request.getParameter(paramName) 时,容器也按 UTF-8 解的话,是正确的. 根本无须在客户端进行二次的 encodeURIComponent(...) 如果你在 jsp 程序中,能够 request.setCharacterEncoding( UTF-8 ), 并且 修改服务器 配置,让容器在解 GET 提交的参数时,使用 UTF-8. 客户端提交前不用二次编码, 接收时,也只要直接 request.getParameter(paramName) 即可 --------------------- 如果因为项目需要,不能指定容器使用何种编码规则来解码提交的参数, 比如:需要接收来 自不同页面,不地编码的参数内容时。 (又或者是开发人员被这有点复杂的东东搞得晕头转 这个时候,在客户端对参数进行二次编码,可以有效的避开“提交多字节字符”的这个棘手问题。 因为第一次编码,你的参数内容便不带有多字节字符了,成了纯粹的 Ascii 字符串。(这里 把编第一次的结果叫成 [STR_ENC1] 好了。[STR_ENC1] 是不带有多字节字符的) 再编一次后,提交,接收时容器自动解一次 (容器自动解的这一次,不管是按 GBK 还是 UTF-8 还是 ISO-8859-1 都好,都能够正确的得到 [STR_ENC1]) 然 后 , 再 在 程 序 中 实 现 一 次 decodeURIComponent (Java 中 通 常 使 用 java.net.URLDecoder(***, UTF-8 )) 就可以得到想提交的参数的原值。2023-06-30 00:51:531
请高手指点ASP中Encode的意思。
你说的Encode应该是个自定义函数,完成加密功能。一般在conn.asp里编写这个函数,或直接在本页面编写,当然也可能在其他包含进来的文件里。2023-06-30 00:52:152
如何正确运用PHP json_encode函数进行中文转换
在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。这个函数的功能是将数值转换成json数据存储格式,但是转换后的中文会变成Unicode编码。[php] view plaincopyprint?<?php $arr = array ( "Name"=>"希亚", "Age"=>20 ); $jsonencode = json_encode($arr); echo $jsonencode; ?> 程序运行结果如下:[php] view plaincopyprint?{"Name":null,"Age":20} json_encode 函数中中文被编码成 null 了,Google 了一下,很简单,为了与前端紧密结合,Json 只支持 utf-8 编码,我认为是前端的 Javascript 也是 utf-8 的原因。[php] view plaincopyprint?<?php $array = array ( "title"=>iconv("gb2312","utf-8","这里是中文标题"), "body"=>"abcd..." ); echo json_encode($array); ?> 这个程序的运行结果为:[php] view plaincopyprint?{"title":"u8fd9u91ccu662fu4e2du6587u6807u9898","body":"abcd..."} 数组中所有中文在json_encode之后都不见了或者出现u2353等。解决方法是用urlencode()函数处理以下,在json_encode之前,把所有数组内所有内容都用urlencode()处理一下,然用json_encode()转换成json字符串,最后再用urldecode()将编码过的中文转回来。[php] view plaincopyprint?<?php /************************************************************** * * 使用特定function对数组中所有元素做处理 * @param string &$array 要处理的字符串 * @param string $function 要执行的函数 * @return boolean $apply_to_keys_also 是否也应用到key上 * @access public * *************************************************************/ function arrayRecursive(&$array, $function, $apply_to_keys_also = false) { static $recursive_counter = 0; if (++$recursive_counter > 1000) { die("possible deep recursion attack"); } foreach ($array as $key => $value) { if (is_array($value)) { arrayRecursive($array[$key], $function, $apply_to_keys_also); } else { $array[$key] = $function($value); } if ($apply_to_keys_also && is_string($key)) { $new_key = $function($key); if ($new_key != $key) { $array[$new_key] = $array[$key]; unset($array[$key]); } } } $recursive_counter--; } /************************************************************** * * 将数组转换为JSON字符串(兼容中文) * @param array $array 要转换的数组 * @return string 转换得到的json字符串 * @access public * *************************************************************/ function JSON($array) { arrayRecursive($array, "urlencode", true); $json = json_encode($array); return urldecode($json); } $array = array ( "Name"=>"希亚", "Age"=>20 ); echo JSON($array); ?> 这次成功了,运行结果如下:[php] view plaincopyprint?{"Name":"希亚","Age":"20"}2023-06-30 00:52:252
Encode.exe是什么的?
Encode.exe是监控软件的网络访问程序进程名:Process: Encode.exe [Digital Video Recoder Software]可能被杀软阻止了 导致局域网无法访问到此开放的80 端口2023-06-30 00:52:321
为什么要对url进行encode
url叫做资源统一定位符对它进行encode 为了能够支持多种编码格式简单的说就是支持多种语言和符号和字母,数字等2023-06-30 00:52:392
python中文编码变成字符串无法使用encode?
str类确实没有decode方法,这个方法是bytes类的。要从这种字符串解码出中文,需这样做:s="x22xE8x8ExB7xE5x8Fx96xE6xA8xA1xE6x9DxBFxE5x88x97xE8xA1xA8xE6x88x90xE5x8Ax9Fx22"b=bytes(ord(e) for e in s)print(b.decode())这是运行截图:2023-06-30 00:52:461
c#中如何对字符串进行encode加密
static string UserMd5(string str) { string pwd = ""; MD5 md5 = MD5.Create();//实例化一个md5对像 // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择 byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(str)); // 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得 for (int i = 0; i < s.Length; i++) { // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符 pwd = pwd + s[i].ToString("X"); } return pwd; }2023-06-30 00:53:104
perl中的Encode模块的问题:perl程序中什么时候用Encode::encode什么时候用decode? 输出到屏幕上是字节流?
怎么才一个回答,不好意思我来晚了会perl的应该很多呀,老脚本语言了楼上回答其实也没错,他的是汉字环境,所以用的国标码perl一般用在linux多点,还有就是日本人的企业里,跟ruby类似输出到屏幕上,是解码过的字符串,用的decode处理的时候要编码成相应的流,encode成什么就看你的处理了开始这个东西我也很纠结,其实没心要的,en不成就de嘛~2023-06-30 00:53:172
python encode是哪个库
这个不用库吧 直接就可以使用>>> "sdfsdfsd".encode()b"sdfsdfsd">>>2023-06-30 00:53:251
为什么要对url进行encode
这个问题涉及到URL的定义。我们知道URL是为了 统一的命名网络中的一个资源(URL不是单单为了HTTP协议而定义的,而是网络上的所有的协议都可以使用)。所以这就要求URL有一些基本的特性:1、URL是可移植的。(所有的网络协议都可以使用URL)2、URL的完整性。(不能丢失数据,比如URL中包含二进制数据时,如何处理)3、URL的可阅读性。(希望人能阅读)因为一些历史的原因URL设计者使用US-ASCII字符集表示URL。(原因比如ASCII比较简单;所有的系统都支持ASCII)为了满足URL的以上特性,设计者就将转义序列移植了进去,来实现通过ASCII字符集的有限子集对任意字符或数据进行编码。以下是RFC3986中对转义部分的一些定义:Reserved characters are those characters that sometimes have special meaning。Unreserved characters have no such meanings。就是说在RFC3986中Unreserved characters部分的字符是不需要转义的其他都需要。PS:不同的编程语言对于URL的转义还不一样。比如Java中的URLEncoder是按照RFC2398转义,PHP5中的rawurlencode是按照RFC3986转义。作者:秋水来源:知乎2023-06-30 00:53:321
关于Mysql encode加密函数的问题
需要保存加密结果的字段为BLOB类型;如下:CREATE TABLE `tet` ( `title` blob, `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8INSERT INTO tet(title) VALUES(ENCODE("数对密码字段进行","abc"));SELECT * FROM tet;SELECT DECODE(title,"abc") from tet;本人在linux上运行结果正常。仅供参考2023-06-30 00:53:482
encodeurl加密原理
、加密原理对于一个纯文本,加密后它会变成一堆乱码,这堆乱码包括了许多非法字符,我们不希望把这些字符放入bean中,因此在加密完后,我们还要对加密结果进行base64编码。PBE从字面上理解,它必须使用一个口令,我们不希望我们的加密过于复杂而影响页面跳转的速度,因此我们不采用口令+KEY的形式,我们这边的口令就是我们的KEY。2023-06-30 00:53:551
ffmpeg decode, encode, transcode, mux, demux, stream, filter的区别
ffmpeg--多媒体视频处理工具简单的说,ffmpeg有视频采集功能、视频格式转换、视频抓图、给视频加水印值得注意的是,ffmpeg只是提供了编码解码的接口。decode--译码,解码工具如:H264 decodeencode--解码值得一提的是:encode+decode=codec(编码方式)demux是“解析格式”,比如MKV,MOV是格式(专业的叫法是容器)格式内有stream,每个stream可能是影像,声音,或字幕,影像声音字幕总的来说:demux是“解析格式”,比如MKV,MOV是格式,容器内有很多stream,每个stream可能是影像,声音,或字幕,影像声音字幕又各自有不同的编码方式,如H264,AAC,SRT。decode对应于编码方式,如H264 decode.2023-06-30 00:54:022
java在做文件下载时的encode与decode问题
是在写servlet吗?如果是,只要这样Ok了String filenNme="myName";filenNme= new String(filenNme.getBytes(), "ISO-8859-1");response.setHeader("Content-Disposition", "attachment;filename="+ filenNme);这样就好了2023-06-30 00:54:092
http通讯中,对Response body的encode是什么意思,如何decode
1 2 问: 使用post时数据会放到http报文中间传输过去,你是不需要做任何操作的。你可以认为自动encode了然后你读取的时候自动decode了。 3 问:当你使用get方法传输数据时,而且传输的数据中包含中文、符号等字符时,就需要用encode进行编码。2023-06-30 00:54:161
后端返回encode怎样读取
1、后台通过URLEncoder.encode(data,"UTF-8")方法将data字符串进行了编码后再返回给前台。2、获取到这个字符串的时候需要调用decodeURIComponent进行解码就可以读取后端返回encode。2023-06-30 00:54:341
为什么要对url进行encode
.encodeURL函数主要是来对URI来做转码,它默认是采用的UTF-8的编码.. UTF-8编码的格式:一个汉字来三个字节构成,每一个字节会转换成16进制的编码,同时添加上%号.假设页面端输入的中文是一个逗中地,按照下面步骤进行解码1.第一次encodeURI,按照utf-8方式获取字节数组变成[-28,-72-83],对字节码数组进行遍历,把每个字节转化成对应的16进制数,这样就变成了[E4,B8,AD],最后变成[%E4,%B8,%AD] 此时已经没有了多字节字符,全部是单字节字符。2、第二次encodeURI,进行编码,会把%看成一个转义字符,并不编码%以后字符,会把%编码成%25.把数组最后变成[%25E4,%25B8,%25AD]然后就把处理后的数据[%25E4,%25B8,%25AD]发往服务器端,当应用服务器调用getParameter方法,getParameter方法会去向应用服务器请求参数应用服务器最初获得的就是发送来的[%25E4,%25B8,%25AD],应用服务器会对这个数据进行URLdecode操作,应用服务器进行解码的这一次,不管是按照UTF-8,还是GBK,还是ISO-8859,,都能得到[%E4,%B8,%AD],因为都会把%25解析成%.并把这个值返回给getParameter方法3、再用UTF-8解码一次,就得到"中"了。想想看,如果不编码两次,当服务器自动解码的时候,假如是按照ISO-8859去解码UTF-8编码的东西,就是会出现乱码。JS:[sql] view plain copydocument.authorityForm.action = basePath3+"User_viewUser.do?id="+id+"&roleName="+encodeURI(encodeURI(roleName))+"&roleType="+roleType; Java后台:[sql] view plain copyroleName = java.net.URLDecoder.decode(getRequest().getParameter("roleName"),"UTF-8");2023-06-30 00:54:411
使用encode()方法可以将一个数字转化为二进制数吗
使用encode()方法可以将一个数字转化为二进制数吗?回答是:使用encode()方法可以将一个数字转化为二进制数。2023-06-30 00:54:481
java.net.URLEncoder.encode 这个方法是不是已经过时了啊?
是的,不指定字符编码的方法已经被废止。改为String t=URLEncoder.encode(内容, 字符编码);//字符编码和文档编码一致比如String t=URLEncoder.encode(txt, "GBK");//使用常见的gbk编码2023-06-30 00:54:571
Java中URLEncoder.encode和encodeURIComponent的区别
1)encodeURIComponent和decodeURIComponent在前端使用2)URLEncoder.encode和URLDecoder.decode在后台使用知识点:1)encodeURIComponent和URLEncoder.encode的区别在于前者对下面五个符号不编码! %21 " %27 ( %28 ) %29 ~ %7E2)decodeURIComponent和URLDecoder.decode暂时还看不出有何区别解释:前后台交互传输数据的过程中,如果含有!"()~,同样的内容会传输不同的编码结果,但是对方都能解码。在具体应用时,如果有比较前后台编码的逻辑,最好测一下这几个符号。2023-06-30 00:55:031
mysql encode函数为何不能用
需要保存加密结果的字段为BLOB类型;如下:CREATE TABLE `tet` ( `title` blob, `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8INSERT INTO tet(title) VALUES(ENCODE("数对密码字段进行","abc"));SELECT * FROM tet;SELECT DECODE(title,"abc") from tet;本人在linux上运行结果正常。仅供参考2023-06-30 00:55:101
Java中URLEncoder.encode和encodeURIComponent的区别
1)encodeURIComponent和decodeURIComponent在前端使用2)URLEncoder.encode和URLDecoder.decode在后台使用知识点:1)encodeURIComponent和URLEncoder.encode的区别在于前者对下面五个符号不编码! %21 " %27 ( %28 ) %29 ~ %7E2)decodeURIComponent和URLDecoder.decode暂时还看不出有何区别解释:前后台交互传输数据的过程中,如果含有!"()~,同样的内容会传输不同的编码结果,但是对方都能解码。在具体应用时,如果有比较前后台编码的逻辑,最好测一下这几个符号。如果编程环境已解决此问题最好,否则就要考虑一下修补之事了。2023-06-30 00:55:202
java 中如何调用encodeuri
javascript:encodeURI(value):将value转换成utf-8,decodeURI(value):将utf-8的value反转成字符串。java:URLDecoder.decode(value, "utf-8");URLEncoder.encode(value, "utf-8"); -----------------------------------------------------------------------------jsp页面上有一个文本框:<input type="text" name="userName" value="<%=request.getAttribute("couserName %>"/>当文本框内容是汉字的时候,servlet中获得此文本框内容时是乱码:request.getParameter("couserName;解决:String str = request.getParameter("couserName;当文本框是中文时:new String(str.getBytes("ISO-8859-1"), "GB2312");2023-06-30 00:55:272
在C#中怎样将一个字符串ENCODE成UTF8的URL格式
Encoding gb2312 = Encoding.GetEncoding("gb2312"); Encoding utf8 = Encoding.UTF8; //首先用utf-8进行解码string key = HttpUtility.UrlDecode(oStr, utf8);// 将已经解码的字符再次进行编码.string encode = HttpUtility.UrlEncode(key, utf8).ToLower();2023-06-30 00:55:353
在C#中怎样将一个字符串ENCODE成UTF8的URL格式?
Encoding gb2312 = Encoding.GetEncoding("gb2312"); Encoding utf8 = Encoding.UTF8; //首先用utf-8进行解码string key = HttpUtility.UrlDecode(oStr, utf8);// 将已经解码的字符再次进行编码.string encode = HttpUtility.UrlEncode(key, utf8).ToLower();2023-06-30 00:56:231
PHP中json_encode中文乱码问题
php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。这个函数的功能是将数值转换成json数据存储格式$arr = array ("a"=>1,"b"=>2,"c"=>3,"d"=>4,"e"=>5);echo json_encode($arr);//结果//{"a":1,"b":2,"c":3,"d":4,"e":5}/*下面看一款json_encode中文乱码问题解决方法是用urlencode()函数处理以下,在json_encode之前,把所有数组内所有内容都用urlencode()处理一下,然用json_encode()转换成json字符串,最后再用urldecode()将编码过的中文转回来*/function arrayrecursive(&$array, $function, $apply_to_keys_also = false){static $recursive_counter = 0;if (++$recursive_counter > 1000) {die("possible deep recursion attack");}foreach ($array as $key => $value) {if (is_array($value)) {arrayrecursive($array[$key], $function, $apply_to_keys_also);} else {$array[$key] = $function($value);}if ($apply_to_keys_also && is_string($key)) {$new_key = $function($key);if ($new_key != $key) {$array[$new_key] = $array[$key];unset($array[$key]);}}}$recursive_counter--;}/**************************************************************** 将数组转换为json字符串(兼容中文)* @param array $array 要转换的数组* @return string 转换得到的json字符串* @access public**************************************************************/function json($array) {arrayrecursive($array, "urlencode", true);$json = json_encode($array);return urldecode($json);}$array = array("name"=>"希亚","age"=>20);echo json($array);//应用实例$servname="localhost";$sqlservname="root";$sqlservpws="123456";$sqlname="lock1";$db=mysql教程_connect($servname,$sqlservname,$sqlservpws) or die("数据库教程连接失败");mysql_select_db($sqlname,$db);$sql = "select * from t_operater";$result =mysql_query($sql);$rows = mysql_num_rows($result);while($obj = mysql_fetch_object($result)){$arr[] = $obj;}echo "({"total":"".$rows."","results":".json_encode($arr)."})";2023-06-30 00:56:401
python b64encode和encodestring什么区别
就将str类型转换为Bytes类型这一过程的实质而言,没有区别. 硬要讲区别,大概就是语法上的区别了,一个是函数,一个是方法. 需要传递函数的时候,你不能使用方法. 需要调用方法的时候,你不能写成函数的形式.2023-06-30 00:56:482
如何在form提交时自动进行HTML Encode
第一种方法:用ajax提交。第二中方法:你在页面aspx文件头的Page中加入 ValidateRequest="false",亦或在Web.config文件<system.web>节点下面加入这样一句: <pages validateRequest="false"/>。(ValidateRequest的默认值是True)第三种方法:在文本框上附加一个obblur事件,这个事件的主要作用是检查文本框的值,如果有"<",就进行escape下,然后提交。第四种方法:在表单提交前,监控onSubmit方法,将数据进行escape2023-06-30 00:56:552
URLEncoder.encode 错误怎么解决
可能是不了解getParameter方法的内部工作细节造成的 getParameter方法内部要先进行URL解码,其使用哪种字符集编码进行编码有一下两种依据方式(1)当客户端采用url地址后面传递参数的时候,getParameter默认使用ISO-8859-1编码进行URL解码(1)如果客户端采用实体内容传递参数时,getParameter方法采用getCharacterEncoding方法返回的字符集编码进行解码,如果getCharacterEncoding方法返回值为null时,才采用ISO-8859-1编码进行解码。2023-06-30 00:57:021
json_encode的解决方法
在json_encode() 函数 使用参数:JSON_UNESCAPED_UNICODEjson_encode($arr, JSON_UNESCAPED_UNICODE); 也可以尝试使用这个简短的方法:function jsonEncodeWithCN($data) {return preg_replace(/\u([0-9a-f]{4})/ie, iconv("UCS-2BE", "UTF-8", pack("H4", "$1")), json_encode($data));}如果是php5.4以前的版本使用以下方法 <?php* 处理json_encode() 不支持中文的情况** 实际应用中,当有中文字符时,当直接使用json_encode() 函数会使汉字不能正常显示* 所以有了这个适用性比较广的函数 ch_json_encode()来解决这个问题** charset: UTF-8* create date: 2012-7-8* @author Zhao Binyan* @copyright (C) 2011-2012 itbdw*//*** 处理 json_encode() 不支持中文的情况** @param array|object $data* @return array|object*/function ch_json_encode($data) {/*** 将中文编码* @param array $data* @returnstring*/function ch_urlencode($data) {if (is_array($data) || is_object($data)) {foreach ($dataas$k => $v) {if (is_scalar($v)) {if (is_array($data)) {$data[$k] = urlencode($v);} elseif (is_object($data)) {$data->$k =urlencode($v);}} elseif (is_array($data)) {$data[$k] = ch_urlencode($v);//递归调用该函数} elseif (is_object($data)) {$data->$k = ch_urlencode($v);}}}return$data;}$ret = ch_urlencode($data);$ret =json_encode($ret);return urldecode($ret);}注意,字符编码必须是 utf-8 。使用json_encode Json 做为一种轻量级的数据交换格式,开始受到青睐,有与 XML 抢地盘的风头。而让人高兴的是,php也把 json 序列化数据的功能内置成函数了,这让想使用json的 PHPCoder 备感方便。 美中不足的是,json_encode / json_decode 系列函数只有在 php5.2 以上才有。这让立志开发兼容性强的PHP系统的coder很头痛。 幸好,已经有人把 json 的方法封装成 php4.x 系列甚至更低的版本都可以执行的类了。这里要先谢谢先驱了。让我们可以踩在巨人的肩膀上走向成功。使用方法:if( function_exists(json_encode) ) { return json_encode($phparr); } else { require_once ROOT.include/json.class.php; $json = new Services_JSON; return $json->encode($phparr); } ?>2023-06-30 00:57:202
字符转码(escape()、encodeURI()、encodeURIComponent()区别详解)
返回值:已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列。 解码: unescape() (ECMAScript v3 已从标准中 删除 了 unescape() 函数,并反对使用它,因此应该用 decodeURI() 和 decodeURIComponent() 取而代之。) 说明:该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换 返回值: URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。 提示:如果 URI 组件中含有分隔符,比如 ? 和 #,则应当使用 encodeURIComponent() 方法分别对各组件进行编码。 说明:该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * " ( ) 。 该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,# 返回值: URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。 说明: 该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * " ( ) 。 其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。 提示:请注意 encodeURIComponent() 函数 与 encodeURI() 函数的区别之处,前者假定它的参数是 URI 的一部分(比如协议、主机名、路径或查询字符串)。因此 encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号。2023-06-30 00:57:321
http通讯中,对Response body的encode是什么意思,如何decode
其实说的response被gzip压缩了,你可以Accept-Encoding: gzip 去掉,从新测试请求,你会发现不让你解码。C#实现的话就是在request的headers中加入Accept-Encoding: gzip。response的返回流就会被gzip压缩,所以要先GZipStream类解压后才行。前提是服务器支持gzip压缩,否则即使加入gzip的头,返回的内容也不会压缩。建议返回时候判断下Response.Headers["Content-Encoding"],如果结果是gzip,就先解压缩再把流转换成字符串,如果不是gzip或者Response.Headers 不包含Content-Encoding,那直接把流2023-06-30 00:57:391
为什么会出现这个问题 encodeURL is not defined
encodeURL这个方法的参数是既定的,但是encodeURL(encodeURL(url)),此时encodeURL(url)已经实现了第一次的转换,如果再把encodeURL(url)的结果最为参数传递给encodeURL方法,那么此时,除非是encodeURL方法有不同的参数的实现,否则会出现前后参数不一致,进而导致该方法找不到的错误。2023-06-30 00:57:473
server.HTMLEncode:这又是什么意思,请详细解释一下
server.HTMLEncode对html进行编码和解码,就是你获取的need这个字段里可能会含有<br>之类的html标签,这样的话进行编码和解码可以保持它的html标签类型,不用当作"<br>"字符串来处理2023-06-30 00:57:552
为什么前端页面encodeURI两次,可以避免后台中文字符乱码
原因:第一次encodeURI(),就可以将多字节符号转化为单字节符号了。例如汉字“严”,第一次encode后,编码为%E4%B8%A5,“严”UTF-8编码为(E4B8A5),第二次encodeURL,编码为%25E4%25B8%25A5,(%编码为%25),后台容器会自动解码一次。容器自动解的这一次,不管是按 GBK 还是 UTF-8 还是 ISO-8859-1 都好,都能够正确的得到第一次encode后的编码。如果因为项目需要,不能指定容器使用何种编码规则来解码提交的参数, 比如:需要接收来自不同页面,不地编码的参数内容时。2023-06-30 00:58:021