精华内容
下载资源
问答
  • Web编码转换工具

    2018-08-10 14:00:39
    web编码转化工具,web编码转化工具,web编码转化工具,
  • K8-Web编码转换工具.exe

    2015-11-23 12:42:37
    K8-Web编码转换工具.exe
  • ASP.NET HTMLWeb编码器FreetextBox(里面说明书) 很方便的webhtml编码器
  • java web编码

    千次阅读 2012-10-22 11:40:51
    java web 开发 编码问题详解 浏览器 IE/FireFox -------——---->Servlet容器--------——---------------->显示页面  编码 使用容器的URIEncoding解码/request解码,再编码发出响应 解码  一、...

    java web 开发 编码问题详解

    浏览器 IE/FireFox -------——---->Servlet容器--------——---------------->显示页面 

    编码        使用容器的URIEncoding解码/request解码,再编码发出响应             解码 

    一、请求 
    我把用户发送请求方式不同引起的中文问题划分了四种类型: 

    1、表单的get提交 

    2、表单的post提交 

    3、页面链接传递中文参数(参考get提交) 

    4、地址栏中参数直接输入中文提交(不讨论,违背寻常规则,而且这种方式很难控制) 

    1.get提交 
    对于这种,影响的有tomcatURIEncoding 
    浏览器会根据自己的页面的编码格式作为起始编码格式(右击菜单编码有显示的),把字符使用浏览器的编码格式编码成byte字节进行传输。到了tomcat这里,tomcat会使用URIEncoding进行重新编码(解码),如果tomcat没有配置的话就会使用iso-8859-1byte进行重新编码(解码)成字符。如果浏览器得编码格式为UTF-8,且tomcat没有配置重新编码(解码)格式的话,就可以使用下面的方式拿到正确的字符了new String(request.getParameter("text").getBytes("iso-8859-1"),"utf-8") 上的意思就是说,把刚才的字符,用iso-8859-1进行编码成byte,还原回去,再使用uft-8byte进行重新编码(解码)成字符。(这个方法就是刚才从浏览器到tomcat过来的逆向过程) 

    2.post提交 
    对于这种情况,response.setCharacterEncoding有影响,当没有对response.setCharacterEncoding设置的时候值为null,则默认采用iso-8859-1来进行重新编码(解码)。 
    浏览器根据自己页面的编码格式作为起始编码格式,把字符进行编码成byte进行传输,到了tomcattomcat不进行干涉其中的重新编码(解码)格式。如果response.getCharacterEncodingnull,那么默认采用iso-8859-1进行重新编码(解码)成字符,如果设置了,就按照设置的编码格式进行重新编码(解码)字符。 

    jsppageEncoding="GB18030"  jsp页面的编码格式,即jsp会被解析成servlet时,采用的编码格式。如果不配置,默认采用iso-8859-1,当jsp文件保存编码类型和pageEncoding不一致时就会出现jsp内部解析乱码。Eclipse现在默认pageEncoding就是文件的编码格式,修改pageEncoding就会修改文件的编码格式。该参数还有一个功能,就是在JSP中不指定contentType参数,也不使用response.setCharacterEncoding方法时指定对服务器响应进行重新编码(解码)的编码,从而pageEncoding会影响浏览器的编码格式。 

    jspcontentType="text/html;charset=UTF-8"  的作用是指定对服务器响应进行重新编码(解码)的编码。设定浏览器的编码格式。也就是说浏览器提交数据就会使用这个编码格式。相当于response.setCharacterEncoding来改变编码,但是改变的只是jsp请求的response编码格式。不能改变里面所有其他的ajax请求的编码格式。在没有设定的情况下默认采用ISO-8859-1格式。 

    meta 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    当前面pageEncodingcontentType都没有设置的情况下,被解析成的html页面就会采用这种编码方式。来把byte解析成浏览器显示的信息。 

    jsp页面中 pageEncoding--->contentType--->meta 默认缺省。pageEncoding写了后面的都可以不用写,默认继承。 

    jsp页面中的设定编码优先级response.setCharacterEncoding--->contentType--->pageEncoding  层层覆盖。 

    request.setCharacterEncoding("UTF-8")的作用是设置对客户端请求进行重新编码(解码)的编码。 
    该方法用来指定对浏览器发送来的数据进行重新编码(或者称为解码)时,使用的编码。对post方法有效。 

    使用response.setCharacterEncoding方法时,用该参数指定对服务器响应进行重新编码(解码)的编码。 

    tomcat:默认URIEncodingiso-8859-1,可以设置。设置之后,会影响get方法和页面链接传递中文的参数字符编码。 

    关于UTF-8GBK转化之间的问题 
    UTF-8转化成GBK,再从GBK转化成UTF-8的时候,偶数汉字可以在UTF-8GBK两者中互相转换,而奇数个汉字则不能。 

    关于BIG5 
    关于其他的转码问题,如果使用的是简体中文的字符,即使编码和解码都是使用BIG5,部分字符仍然无法解析,是乱码。 

    关于ISO-8859-1 
    ISO-8859-1是不支持中文的,所以就算中文字符使用ISO-8859-1进行编码,最后再用ISO-8859-1进行重新编码(解码)的话,拿到的字符也不能显示中文。即换言之,ISO-8859-1不能作为把字符变成byte的编码格式使用。 

    ajax 
    xmlHttp.responseText的请求的默认编码是UTF-8 。当然可以重新设置,通过在Request Headers中设置Content-Typeapplication/x-www-form-urlencoded; charset=utf-8。为什么ajax和之前的不同呢?因为ajax不是使用默认的浏览器跳转提交方式,而是使用httprequest提交方式,默认跳转方式会读取浏览器的编码格式,而httprequest不会,所以ajax就会设置自己的默认的编码格式进行提交,即UTF-8.而使用ajaxpost方法提交,无需再设定request的重新编码(解码)格式,因为request不再是默认的null,已经修改为UTF-8,所以不用转换直接拿出即可。而对于get方法的话,需要参考tomcatURIEncoding重新编码(解码)。 



    二、返回信息 
    response如果没有显式设置的话,不管request的编码是什么,response的编码就是ISO-8859-1 

    对于response返回的信息如:response.getWriter().println就可以看到这个编码设置的作用了。而对于使用request.setAttribute等传递数据的话,这个编码格式设置了也没用。 

    当使用response.getWriter().println打印到浏览器时,在没有设置response的时候默认为null,而在服务器端则默认使用iso-8859-1进行编码成byte,等到了浏览器,发现response的信息header中没有相关编码设置,就会去取window系统的编码格式,中文系统默认为GBK/GB2312。所以,打印出来的页面的浏览器编码格式为GB2312。而如果设置了response的编码格式,那么就算到了浏览器,浏览器解析也会按照设置的编码格式重新编码(解码)。 

    当使用response.getWriter().println打印到本地文件时,即使设置了response,在发出时,采用的是设置的编码格式编码成byte,等到了客户端,客户端会用系统的编码格式重新编码(解码)文件,对于windows默认就是GB2312/GBK,所以最好再response发出时就设置编码的格式为GBK 

    至于为什么打印到浏览器,头文件的信息就写入编码格式,而打印到本地文件,头文件中就没有写入编码格式的问题,还没有得到证实。猜测:后端传送到浏览器时,浏览器使用包含重新编码(解码)格式的。而传送文件时,没有使用重新编码(解码)格式的,使用的是操作系统的编码格式存储文件。 

    如果设置了response.setCharacterEncoding。那么就会按照这个编码格式传送到前端,浏览器并用这种方式重新编码(解码)。也就是说在传送的页面的文本信息head中的content-type已经设置成了response.setCharacterEncoding定义的编码格式,来用作重新编码(解码)。 

    ajax 
    ajax使用的是response.responseText来进行获取信息,也就是说,也是需要使用到response的编码格式的。ajax不会再对该编码格式进行任何修改。只是接受而已。 

    展开全文
  • 我在数据库打中文,通过表单提交的话,即使你打对了,他也返回的是错误的页面,只有你在数据库插入英文,你再输入正确的英文,他才会跳转成功页面,请问下各位大神,我这是要修改哪里的编码集。我把eclipse中和 ...
  • WEB前端编码规范WEB前端编码规范WEB前端编码规范WEB前端编码规范WEB前端编码规范WEB前端编码规范WEB前端编码规范WEB前端编码规范
  • web安全编码

    2018-10-26 10:24:09
    web安全编码
  • web前端编码规范

    2019-01-28 17:29:37
    WEB前端编码规范_计算机软件及应用_IT/计算机_专业资料。web前端代码编写规范,主要包括CSS、HTML和JS的编写要求和基本规范
  • Web前端编码规范.doc

    2020-02-16 22:52:37
    web前端编码规范包括csst编码规范、htmlt编码规范、javascript编码规范。主要写了编码主要实现及编码经验和前端开发经验。
  • WebIDE:编码WebIDE社区版
  • Web前端编码规范

    2011-12-13 01:21:00
    javascript编码规范、HTML编码规范、CSS编码规范
  • Web应用安全编码

    2012-02-15 16:57:15
    Web应用安全编码技术介绍,介绍应用安全编码技术!适用于初学者和刚刚接触安全的同学。
  • WEB前端编码规范

    2017-10-27 11:04:00
    适用于公司的前端开发人员的规范,可以作为公司的前端开发人员的编码约束准则,同时对于所有前端开发人员是一份学习的文档,当前公司用的就是这份文档,我们所有开发人员入职的时候必须阅读的这一份文档,
  • 解析WEB开发编码问题

    千次阅读 2010-12-06 10:40:00
    解析WEB开发编码问题

    解析WEB开发编码问题

    URL: http://tcking.javaeye.com/blog/726643

     

    在进行web开发的时候经常会遇到乱码的问题,乱码一般出现在:

    1.写在jsp文件中的中文变成乱码

    2.页面的中文都变成乱码

    3.后台通过request.getParameter()乱码

    编码的基础知识

    计算机只能以字节为单位存储和传输信息,而人需要看的是字符串,字节和字符串之间的对应关系就是字符集,例如字符“中”使用UTF-8字符集映射的字节为:E4 B8 AD 三个字节,同样反过来,这三个字节通过UTF-8字符集映射便能得到“中”这个字符,不同的字符集映射规则不一样,能表示的范围也不一样,例如“中”在GB2312中对应的字节表示为:D6 D0 两个字节,字符和字节之间的转换,描述为编码和解码:

    l  字符->字节:编码,例如:“中”的UTF-8编码为 E4 B8 AD

    l  字节->字符:解码,例如:字节数组D0 D6根据GB2312解码为字符“中”

    还有一类编码称为URI编码和URI解码,不过URI编码和解码不是字符串和字节流之间的转换,而是由一个字符串表示另一个字符串,例如:

    l  “中”的UTF-8 URI编码为 %E4%B8%AD

    l  字符串%E4%B8%AD根据UTF-8进行URI解码为字符“中”

    可以看出来,URI编码就是将一个字符串用%+对应字符集的编码组织的字符串来表示的,在javaString类有两个常用的方法进行编码和解码:

    l  getBytes :例如”.getBytes(“字符集”),根据指定的字符集进行编码

    l  String(bytes[],”字符集”):根据自定的字符集对字节数组进行解码

    为什么会出现乱码问题

    浏览器和服务器通过网络相连,浏览器请求编码成字节流在网络上传输,应用服务器接收到浏览器发送过来的字节流后通过相应的字符集再解码为字符串,如果浏览器和服务器端使用了不同的字符集或者不兼容的字符集就会导致乱码问题,例如,浏览器将“中”按照UTF-8编码为字节E4 B8 AD,在网络上传输,应用服务器接收到字节后按照GBK进行解码,那么前两个字节首先被解码为“涓”了,这只是个简单的过程说明,实际的过程比这要复杂。

    因此要搞清web的编码问题,很有必要先弄清请求的过程和过程中的编码和解码。web是请求响应模式,用户操作浏览器,例如点击一个按钮提交表单,或者点击一个超链接,这时浏览器就会向应用服务器发送请求,servlet容器接受到请求后,根据web.xml的设置调用相应的应用程序,应用程序根据发送的请求进行一定的逻辑处理后返回给浏览器一段html代码,浏览器根据html解析并展现给用户,这就是一次请求应答的过程,下面对各部分作更加详细的介绍:

    1.    浏览器向应用服务器发送请求

    浏览器向应用服务器发送请求一般通过三种方式:1.提交表单,2.超链接,3.Ajax

    1)表单提交

    表单提交又分为postget两种方法,

    采用post方法时浏览器会将表单中的字符串,采用页面的字符集编码为字节流发送到服务器

    采用get方法时,浏览器首先会将表单中的值通过页面的字符集进URI编码后拼接到actionURL后面发送到应用服务器,例如:

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title>test</title>

    </head>

    <body>

    <form action=http://www.google.com>

    <input type=text name=test value="" />

    <input type=submit />

    </form>

    </body>

    </html>

    在点击提交的时候,URL www.google.com.hk/?test=%E4%B8%AD,可以看出“中”字被编码为%E4%B8%AD,因为当前页面的字符集为UTF-8,所以在进行get表单提交时将按照UTF-8字符集进行URI编码。

    2)超链接

    在超链接中一般会传递参数,有时候也会传递中文,如这段代码:<a href="http://www.google.com/?test=">link</a>浏览器最终发送给服务器的都是asc字符,其中的“中”不属于asc字符集,因此也会对其进行URI编码的,但是不同的浏览器采用的字符集却不一样,如上面的这个超链接片段,在windows7中,不论页面的content="text/html; charset=utf-8"还是content="text/html; charset=GBK"IE8发送的都是www.google.com.hk/?test=%D6%D0,可以看出这是GBKURI编码,IE8对超链接中的URI编码与页面的编码无关,与系统的默认编码有关;而在windosx xp中,IE8发送的是页面编码采用的字符集进行的URI编码,如果页面编码为GBKIE6发送的为GBK的页面编码,如果页面编码为UTF-8则只发送UTF-8URI编码的前两个字节;在其他的浏览器中,如Firefoxchrome,其URI编码采用的是页面的编码。

     

    操作系统

    浏览器

    页面编码

    发送的请求字符串

    说明

    windows7

    IE8中文

    UTF-8

    test=%D6%D0

    windows7中,采用GBK字符集进行URI编码与页面的编码无关

    windows7

    IE8中文

    GBK

    test=%D6%D0

    XP

    IE8中文

    UTF-8

    test=%E4%B8%AD

    xp中与采用页面编码的字符集进行URI编码

    XP

    IE8中文

    GBK

    test=%D6%D0

    windows2003

    IE6中文

    GBK

    test=%D6%D0

    GBK是正确,UTF-8是不正确

    windows2003

    IE6中文

    UTF-8

    test=%E4%B8

    --

    chrome中文,firefox英文

    UTF-8

    test=%E4%B8%AD

    采用页面编码的字符集进行URI编码

    --

    chrome中文,firefox英文

    GBK

    test=%D6%D0

    可以看出,直接在URL中带中文,IE的不同版本在不同的操作系统中进行URI编码的结果可能不一样,chromefirefox使用编码和表单的get方式的编码一致,因此,直接在链接中写非asc字符是很危险的,因为字符的编码方式和客户端的环境有关。所以为了避免浏览器进行不确定的URI编码,需要在程序中将中文进行URI编码后在放到URL中,JavaScript提供了encodeURI()函数,它提供的是UTF-8URI编码,也可以通过java.net.URLEncoder.encode(str,"字符集")进行编码

    3)ajax

    ajax可以指定get方式或者post方式,情况和上面说的类似

    2.    应用服务器获取参数

    servlet中一般通过request.getParameter()来获得浏览器发送过来的参数,需要注意的是,服务器Servlet的最底层接受到的是InputStream,也就是字节流,request.getParameter()返回的是一个字符串因此在getParameter()方法的内部存在解码的过程,而解码所采用的字符集根据应用服务器和操作系统的不同有可能不同,ServletRequest接口提供了一个方法:setCharacterEncoding()来设置getParameter解码的字符集,这个方法必需在getParameter之前调用,通过查看tomcate的源代码发现getParameter在第一次调用时会去初始化一个map的对象,map中存储的就是参数名和参数值,这些值就是根据设置的字符集进行解码的,一旦这些对象解码完毕,下次调用就直接从map中取值,而不需要重新去解码了,所以setCharacterEncoding必需在getParameter之前调用才有作用,也有人说这个方法只对post传递参数有效,而对get方法传递的参数无效,对tomcat5确实是这样的,但是对Websphereapsuic,setCharacterEncodingpostget同样有效。

    应用服务器

    服务器所在系统默认编码

    页面编码

    提交方式

    URI编码

    setCharacterEncoding

    getParameter结果

    备注

    websphere6.1

    GBK

    UTF-8

    POST

    -

    UTF-8

    正确

    服务器默认配置

    POST

    -

    GBK

    错误

    GET

    UTF-8

    UTF-8

    正确

    超链接

    GBK

    GBK

    正确

    tomcat5.5

    GBK

    UTF-8

    POST

     

    UTF-8

    正确

    未设置URIEncodinguseBodyEncodingForURI

    POST

     

    GBK

    错误

    GET

    UTF-8

    UTF-8

    错误

    超链接

    GBK

    GBK

    错误

    apusic5.1

    GBK

    UTF-8

    POST

     

    UTF-8

    正确

    服务器默认配置

    POST

     

    GBK

    错误

    GET

    UTF-8

    UTF-8

    正确

    超链接

    GBK

    GBK

    正确

    从上面的表格可以看出,Websphere6.1apusic5.1应用服务器的getpost方法其getParameter解码所用的字符集是setCharacterEncoding所指定的字符集,tomcat5post方法使用的是setCharacterEncoding,但是get方法却不是。在回过头看看这几个试验的过程,浏览器使用post方法时将会采用页面的字符集进行编码成字节流发送到服务器,服务器接收到字节流后根据setCharacterEncoding设定的字符集进行解码,获得字符串,

    也就是说,如果使用post方法提交,只要保证“页面的编码的字符集=setCharacterEncoding设置的字符集”那么getParameter获得的值就是正确的,get和超链接的方式类似,

    表单使用get提交时,会根据页面的编码进行encodeURI,超链接的方式程序可以根据指定的字符集进行URI编码,

    两种方式的共同点是浏览器都会进行URI编码,在Websphere,get和超链接的方式只要“URI编码的字符集=setCharacterEncoding的字符集”,那么getParameter的结果就是正确的,而使用get提交表单时其“URI编码的字符集=页面编码的字符集”,超链接的URI编码的字符集在上面说过,chromeFirefox浏览器中URI编码的字符集=页面编码的字符集,但是IE却不是,没有规律。

    tomcat5.5getParameter获取get方法或超链接传过来的参数时默认会用ISO8859-1进行解码,例如浏览器发送UTF-8的编码的请求,tomcat5.5getParameter使用ISO8859-1解码,这时的结果是错的,如果要获得正确的值,需要在tomcat5.5getParameter的时候采用UTF-8进行解码,通过设置URIEncoding="UTF-8"或者useBodyEncodingForURI="true",就能让tomcat在的getParameter时采用UTF-8解码(useBodyEncodingForURI="true"表示解码的字符集采用与页面编码相同的字符集),如果不通过配置要并且需要获得正确的值,则需要程序进行转码,因为getParameter是通过ISO8859-1解码的,所有先通过getParameter().getBytes("ISO8859-1")编码成原来的字节数组,然后使用UTF-8字符集解码为字符串:new String(getParameter().getBytes("ISO8859-1"),"UTF-8")

    3.    设置浏览器的页面编码

    服务器向浏览器发送的也是经过编码成字节流在网络上传输,浏览器接收到字节流之后使用指定的字符集解码成字符串再进行展现,如果这两个环节的字符集不一致也会导致乱码的问题,

    例如静态HTML文件或jsp中都是以UTF-8保存的,则需要告诉浏览器用UTF-8来进行解码,

     

    • 如果是 jsp 可以通过 <%@ page contentType="text/html; charset=UTF-8" language="java" %> 来进行设置,
    • 静态文件可以通过 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 进行设置,
    • 如果在 servlet 中直接进行输出,可以通过 response.setCharacterEncoding("UTF-8")setContentType("text/html;charset=UTF-8")setHeader("Content-Type","text/html;charset=UTF-8") 进行设置,

     

    这些操作都相当于在response的头部增加"Content-Type:text/html;charset=UTF-8"信息,

    header中的编码信息的优先级要高于htmlmeta标签,也就是说如果serlvet中设置了setContentType("text/html;charset=UTF-8")jsp设置了<meta http-equiv="Content-Type" content="text/html; charset=GBK"/>则浏览器会按照UTF-8字符集进行解码,

    展开全文
  • java爬虫-可自定义webUrl编码 原jsoup中webUrl编码格式为固定UTF-8 例如新浪网编码为GB2312 Connection conn = Jsoup.connect(url); conn.request().webEncode("GB2312");即可设置好webUrl编码格式
  • latihan-web-dasar Latihan编码Web BLK Bekasi 2021
  • java Web编码问题

    千次阅读 2019-06-12 20:25:28
    首先,说说JSP/Servlet中的几个编码的作用。    在JSP/Servlet 中主要有以下几个地方可以设置编码,pageEncoding=“UTF-8”、contentType=“text/html;charset=UTF-8”、request.setCharacterEncoding(“UTF-8”)...

    首先,说说JSP/Servlet中的几个编码的作用。
      
      在JSP/Servlet 中主要有以下几个地方可以设置编码,pageEncoding=“UTF-8”、contentType=“text/html;charset=UTF-8”、request.setCharacterEncoding(“UTF-8”)和response.setCharacterEncoding (“UTF-8”),其中前两个只能用于JSP中,而后两个可以用于JSP和Servlet中。
      
      1、pageEncoding=“UTF-8"的作用是设置JSP编译成Servlet时使用的编码。
      
      众所周知,JSP在服务器上是要先被编译成Servlet的。pageEncoding=“UTF-8"的作用就是告诉JSP编译器在将JSP文件编译成Servlet时使用的编码。通常,在JSP内部定义的字符串(直接在JSP中定义,而不是从浏览器提交的数据)出现乱码时,很多都是由于该参数设置错误引起的。例如,你的JSP文件是以GBK为编码保存的,而在JSP中却指定pageEncoding=“UTF-8”,就会引起JSP内部定义的字符串为乱码。
      
      另外,该参数还有一个功能,就是在JSP中不指定contentType参数,也不使用response.setCharacterEncoding方法时,指定对服务器响应进行重新编码的编码。
      
      2、contentType=“text/html;charset=UTF-8"的作用是指定对服务器响应进行重新编码的编码。
      
      在不使用response.setCharacterEncoding方法时,用该参数指定对服务器响应进行重新编码的编码。服务器在将数据发送到浏览器前,对数据进行重新编码时,使用的就是该编码。
      
      3、request.setCharacterEncoding(“UTF-8”)的作用是设置对客户端请求进行重新编码的编码。
      
      该方法用来指定对浏览器发送来的数据进行重新编码(或者称为解码)时,使用的编码。
      
      4、response.setCharacterEncoding(“UTF-8”)的作用是指定对服务器响应进行重新编码的编码。
      
      服务器在将数据发送到浏览器前,对数据进行重新编码时,使用的就是该编码。
      
      其次,要说一说浏览器是怎么样对接收和发送的数据进行编码的
      
      response.setCharacterEncoding(“UTF-8”)的作用是指定对服务器响应进行重新编码的编码。同时,浏览器也是根据这个参数来对其接收到的数据进行重新编码(或者称为解码)。所以在无论你在JSP中设置response.setCharacterEncoding (“UTF-8”)或者response.setCharacterEncoding(“GBK”),浏览器均能正确显示中文(前提是你发送到浏览器的数据编码是正确的,比如正确设置了pageEncoding参数等)。读者可以做个实验,在JSP中设置 response.setCharacterEncoding(“UTF-8”),在IE中显示该页面时,在IE的菜单中选择"查看(V)“à"编码 (D)“中可以查看到是” Unicode(UTF-8)”,而在在JSP中设置response.setCharacterEncoding (“GBK”),在IE中显示该页面时,在IE的菜单中选择"查看(V)“à"编码(D)“中可以查看到是"简体中文(GB2312)”。
      
      浏览器在发送数据时,对URL和参数会进行URL编码,对参数中的中文,浏览器也是使用response.setCharacterEncoding参数来进行URL编码的。以百度和GOOGLE为例,如果你在百度中搜索"汉字”,百度会将其编码为”%BA%BA%D7%D6”。而在GOOGLE中搜索 “汉字”,GOOGLE会将其编码为”%E6%B1%89%E5%AD%97",这是因为百度的 response.setCharacterEncoding参数为GBK,而GOOGLE的的 response.setCharacterEncoding参数为UTF-8。
      
      浏览器在接收服务器数据和发送数据到服务器时所使用的编码是相同的,默认情况下均为JSP页面的response.setCharacterEncoding参数(或者contentType和 pageEncoding参数),我们称其为浏览器编码。当然,在IE中可以修改浏览器编码(在IE的菜单中选择"查看(V)“à"编码(D)“中修改),但通常情况下,修改该参数会使原本正确的页面中出现乱码。一个有趣的例子是,在IE中浏览GOOGLE的主页时,将浏览器编码修改为"简体中文(GB2312)”,此时,页面上的中文会变成乱码,不理它,在文本框中输入"汉字”,提交,GOOGLE会将其编码为"%BA%BA%D7%D6",可见,浏览器在对中文进行URL编码时,使用的就是浏览器编码。
      
      弄清了浏览器是在接收和发送数据时,是如何对数据进行编码的了,我们再来看看服务器是在接收和发送数据时,是如何对数据进行编码的。
      
      对于发送数据,服务器按照response.setCharacterEncoding—contentType—pageEncoding的优先顺序,对要发送的数据进行编码。
      
      对于接收数据,要分三种情况。一种是浏览器直接用URL提交的数据,另外两种是用表单的GET和POST方式提交的数据。
      
      因为各种WEB服务器对这三种方式的处理也不相同,所以我们以Tomcat5.0为例。
      
      无论使用那种方式提交,如果参数中包含中文,浏览器都会使用当前浏览器编码对其进行URL编码。
      
      对于表单中POST方式提交的数据,只要在接收数据的JSP中正确request.setCharacterEncoding参数,即将对客户端请求进行重新编码的编码设置成浏览器编码,就可以保证得到的参数编码正确。有读者可能会问,那如何得到浏览器编码呢?上面我们提过了,在默认请情况下,浏览器编码就是你在响应该请求的JSP页面中response.setCharacterEncoding设置的值。所以对于POST表单提交的数据,在获得数据的JSP页面中request.setCharacterEncoding要和生成提交该表单的JSP页面的 response.setCharacterEncoding设置成相同的值。
      
      对于URL提交的数据和表单中GET方式提交的数据,在接收数据的JSP中设置request.setCharacterEncoding参数是不行的,因为在Tomcat5.0中,默认情况下使用ISO- 8859-1对URL提交的数据和表单中GET方式提交的数据进行重新编码(解码),而不使用该参数对URL提交的数据和表单中GET方式提交的数据进行重新编码(解码)。要解决该问题,应该在Tomcat的配置文件的Connector标签中设置useBodyEncodingForURI或者 URIEncoding属性,其中useBodyEncodingForURI参数表示是否用request.setCharacterEncoding 参数对URL提交的数据和表单中GET方式提交的数据进行重新编码,在默认情况下,该参数为false(Tomcat4.0中该参数默认为true); URIEncoding参数指定对所有GET方式请求(包括URL提交的数据和表单中GET方式提交的数据)进行统一的重新编码(解码)的编码。 URIEncoding和useBodyEncodingForURI区别是,URIEncoding是对所有GET方式的请求的数据进行统一的重新编码(解码),而useBodyEncodingForURI则是根据响应该请求的页面的request.setCharacterEncoding参数对数据进行的重新编码(解码),不同的页面可以有不同的重新编码(解码)的编码。所以对于URL提交的数据和表单中GET方式提交的数据,可以修改 URIEncoding参数为浏览器编码或者修改useBodyEncodingForURI为true,并且在获得数据的JSP页面中 request.setCharacterEncoding参数设置成浏览器编码。
      
      下面总结下,以Tomcat5.0为WEB服务器时,如何防止中文乱码。
      
      1.对于同一个应用,最好统一编码,推荐为UTF-8,当然GBK也可以。
      
      2.正确设置JSP的pageEncoding参数
      
      3.在所有的JSP/Servlet中设置contentType="text/html;charset=UTF-8"或response.setCharacterEncoding(“UTF-8”),从而间接实现对浏览器编码的设置。
      
      4.对于请求,可以使用过滤器或者在每个JSP/Servlet中设置request.setCharacterEncoding(“UTF-8”)。同时,要修改Tomcat的默认配置,推荐将useBodyEncodingForURI参数设置为true,也可以将URIEncoding参数设置为 UTF-8(有可能影响其他应用,所以不推荐)。

    展开全文
  • 移动web输入法自带表情编码处理

    千次阅读 2017-01-05 09:32:52
    通常,我们的字符使用escape、encodeuricomponent、encodeuri编码,然后再...基本情况是:web以特定的URL发起网络请求,中间对URL进行encodeuricomponent编码,最后app截获URL,进行解析处理。那这里就会遇到坑,部分输

    通常,我们的字符使用escape、encodeuricomponent、encodeuri编码,然后再发送给后台,这种方法基本能解决编码的问题。但是,对于内嵌app的web,并且web需要通过app发送网络请求的情况,iOS可能会存在坑。

    基本情况是:web以特定的URL发起网络请求,中间对URL进行encodeuricomponent编码,最后app截获URL,进行解析处理。那这里就会遇到坑,部分输入法自带的表情,encodeURLComponent编码后,iOS采用utf8对请求的URL解析后出现了乱码。
    出现乱码后,就采用escape对用户的输入进行编码。但是,这时候iOS输入中文,app解析URL竟然失败了!如果采用encodeURLComponent编码,部分表情就乱码了。
    后经各种尝试,在不对app进行改动的前提下,最终采用先对字符进行escape编码,将编码结果中的%u符号替换为\u,然后将其发送给后台。取的时候进行方向解析。

    出去:

    msg = escape(msg);
    msg = msg.replace(/\%u/g, '\\u');

    回来:

    msg = msg.replace(/\\u/g, '\%u');
    msg = unescape(msg);
    展开全文
  • Web项目常见编码问题总结

    千次阅读 2017-07-05 21:07:39
    Web项目开发过程中经常遇到中文乱码的问题。一般项目都使用UTF-8编码,在项目的初始阶段都要对项目、环境的文件编码进行设置。
  • 结合WEB系统安全管理要求,防止SQL注入、跨站脚本等漏洞出现,提出对开发人员编码安全规范。
  • Web 图片Base64编码

    千次阅读 2017-04-17 20:33:41
    转载自: 【前端攻略】:玩转图片Base64编码引言 图片处理在前端工作中可谓占据了很重要的一壁江山。而图片的 base64 编码可能相对一些人而言比较陌生,本文不是从纯技术的角度去讨论图片的 base64 编码。标题略大,...
  • 首先,放上web.xml中编码过滤器的设置 filter> filter-name>encodingFilterfilter-name> filter-class> org.springframework.web.filter.CharacterEncodingFilter filter-class>
  • springmvc 在web配置了编码拦截器配置

    千次阅读 2016-07-18 17:17:05
    springmvc 在web配置了编码拦截器配置
  • 网络安全-WEB中的常见编码

    千次阅读 2021-01-04 20:37:27
    编码(encode)和解码(decode)是相当广泛的话题,设计计算机对信息处理的方式,常见于加解密中,当然学习WEB也要了解一些常见的编码,可在攻击中使用编码绕过。 ASCII编码 ASCII (American Standard Code for ...
  • web.xml配置编码方式

    千次阅读 2015-07-07 11:36:25
    配置web.xml文件设置编码方式 encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true encodingFilter
  • java web项目开发编码规范

    千次阅读 2017-05-19 10:40:29
    一、命名规范 1.1 包命名 包名称必须全部用小写。 ...a....b....二、编码规范 ...Dao层、Service层实现类中的方法头部都不需要写注释,但在方法体中,如果写注释进行说明,则用//进行注释说明。...J2EE项目开发编码规范
  • Web常用编码以及攻击绕过笔记

    千次阅读 2017-07-25 10:08:01
    一、URL编码 形式:“%”加上ASCII码(先将字符转换为两位ASCII码,再转为16进制),其中加号“+”在URL编码中和“%20”表示一样,均为空格。 当遇到非ASCII码表示的字符时,如中文,浏览器或通过编写URLEncode,...
  • Spring restful web service编码乱码问题

    千次阅读 2012-09-21 11:12:04
    Spring MVC从3.0开始支持REST Spring MVC从3.0开始支持REST,主要是通过@PathVariable来处理请求参数和路径的映射....如果请求路径里有中文(如/account/全聚德),可能会有乱码问题,通过设置服务器的编码
  • Java web中常见编码乱码问题(一)

    千次阅读 2019-10-04 20:10:18
    最近在看Java web中中文编码问题,特此记录下。  本文将会介绍常见编码方式和Java web中遇到中文乱码问题的常见解决方法: 一、常见编码方式:  1、ASCII 码  众所周知,这是最简单的编码。它总共可以表示128...
  • 供广大web工作者参考并实施,对维护和项目扩展升级都能省时省力。 转载请注明出处,JS前端实用开发QQ群 :147250970 欢迎加入~! HTML编码规范 1 前言 2 代码风格  2.1 缩进与换行  2.2 命名

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 606,722
精华内容 242,688
关键字:

web编码