编码乱码问题

1.提交表单时的编码问题

    页面Get或者Post提交form表单数据时,会对表单中的中文进行编码,而编码方式是由服务器页面响
    应 Header中的“Content-Type: text/html; charset=gb2312”确定的(和浏览器解码方式一致)。
    
    不管get提交还是post提交,input控件全部都进行了GB2312编码,提交的数据为“name=%B1%B1%BE
    %A9&btnSumbit=sumbmit”。修改web.config中“responseEncoding=utf-8”,发现服务器页面响应
    Header中的“Content-Type: text/html; charset=utf8”,再次提交表单时编码已经成了utf-8,
    内容变为“name=%E5%8C%97%E4%BA%AC&btnSumbit=sumbmit”。
    
     观察发现,不管get提交还是post提交,HTTP请求中并没有指定服务器端的解码方式,服务器端解
     码还是根据服务器配置获取的
     
2.浏览器地址栏编码

     在浏览器中输入地址:
      编码方式随浏览器不同而不同,IE11编码方式为GBK,服务器用GB2312解码正确;Firefox34.0编
      码方式为utf-8,服务器GB2312解码乱码。URL中的编码依赖于浏览器,开发中不建议使用,一些
      地址链接含有中文时,建议在生成链接时,对中文指定编码方式编码。
3. JQuery中的AJax提交 

    JQuery是一款优秀的js框架,被广泛使用,但通过AJax提交数据时,却容易出现乱码。通过测试和
    分析JQuery源码,AJax请求时,推荐方式为:        
    1)POST请求:参数放到data中,无需对参数值编码,JQuery在构造HTTP请求时,会调用js的函数
    encodeURIComponent()对data中的键值对分别进行utf-8编码,服务器用utf-8解码。url中对应的
    就是url地址,不能含有参数。
       
    即使服务器Globalization结点配置的GB2312解码,Request.Form["xxx"]也会用utf-8解码,因为  
    AJax的post请求中在HTTP头添加了代码“Content-Type: text/html; charset=utf8”,告诉服务器
    用utf-8解码,达到编码和解码一致的目的。这点可能和我们平时想的不一样,整站配置为GB2312  
    编码的站点,竟然AJax的post请求都是用的utf-8编码!
       
       2)GET请求:参数放在Url中,并按照和服务器一致的编码方式编码,如服务器配置的Globalization
           结点为UTF-8,则将参数值UTF-8编码,可以调用函数encodeURIComponent();如果服务器
           配置为GB2312,则将参数用GB2312编码,可以调用escape()。Get和Post请求的一大差别
           是,GET请求不会改变请求的Header,Request.QueyString["xxx"]解码用的是Globaliza
           tion指定的编码。
           
            默认情况下,JQuery的AJax方法通过post提交数据,编码都是用的utf-8,通过Header
            指定服务器解码方式也为utf-8,但某些特殊情况下可能想服务器用gb2312解码(现在想
            来应该不需要这种场景,因为本身就不大合理,当时可能在某些不大合理的前提下确实
            需要来着,还不停的百度),网上查找资料是说AJax时,添加属性“contentType: "app
            lication/x-www-form-urlencoded; charset=utf-8",”个人测试IE下生效了,服务器变
            成了GB2312解码,但火狐下未生效,原因未知,单步跟踪了代码都执行了,没啥问题。
时间: 2024-11-08 22:53:37

编码乱码问题的相关文章

字符编码乱码问题(servlet底层 编码大揭秘)

好多初学者会遇到,请求过去的信息内包含中文(一般会是get方式提交过去的请求会出现).好郁闷,这是为什么呢.有下面分析下,说的不好可以吐槽 话说我们能遇到这种编码的问题,归根结底就是这  这 web开发不是中国人开发的,中国文化博大精深,四大发明渊源流传,可惜,我们太自己为是了,来了个闭关锁国政策,弄得中国跟不上时代的步伐,不潮了,落伍了,互联网时代被西方人抢了个先,发明了,我们只能用别人的了.我们也知道,西方讲的是英语,所以他们采用的编码格式是iso-8895-1.而这  这种编码方式只占两个

网页编码乱码

1.将gbk转化成utf-8 asp <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>网页头部加上 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">网页meta加上 2.php header("Content-Type:text/html; charset=utf-8&quo

Java web中常见编码乱码问题(二)

根据上篇记录Java web中常见编码乱码问题(一), 接着记录乱码案例: 案例分析:   2.输出流写入内容或者输入流读取内容时乱码(内容中有中文) 原因分析: a. 如果是按字节写入或读取时乱码,应该先检测系统编码是什么样的,看看是否支持中文编码的字符集. System.out.println(System.getProperty("file.encoding")); a1.如果是不支持中文的就要设置jvm编码了,设置方法: Windows环境就在catalina.bat配置: s

C#文件上传编码乱码

又遇到文件编码乱码的事情,这回稍微有些头绪,但是还是花了很多时间去解决. 场景:上传csv文件,导入到数据库.上传文件的编码不定,需要转成unicode存储. 问题点:需要解决判断上传文件的编码. 关于编码,网上已有很多博客解释,只需查询关键字 unicode ansi bom 等 下面贴一个.net 官方的一些编码类型 地址:https://msdn.microsoft.com/zh-cn/library/windows/desktop/dd317756(v=vs.85).aspx 我这边主要

java字符集编码乱码问题

博客分类: web javajspservlet 最近做网页这块时碰到了正文字符乱码问题.别看这小小的一个问题,对我来说却花费了好长一段时间.现在让我慢慢分析它吧(说实话.这些有部分是从网上找的,但都是自己亲自打出来的.这样对自己来说不仅理解了而且还加深了印象).  在java内部运算中.涉及到所有字符串都会被转化UTF-8编码来运算,然而.在被java转化之前,字符串是怎么样的字符集呢?其实java总是根据操作系统的默认编码字符集来决定字符串的初始编码的:而且java系统的输入输出都是采取操作

中文url编码乱码问题归纳整理一

jmeter响应结果乱码问题 当响应数据或响应页面没有设置编码时,jmeter会按照jmeter.properties文件中,sampleresult.default.encoding设置的格式解析 默认ISO-8859-1,解析中文肯定出错 # The encoding to be used if none is provided (default ISO-8859-1) #sampleresult.default.encoding=ISO-8859-1 例子:某请求响应数据编码为UTF-8,

mysql字符集编码乱码测试如下

创建三个表tb_latin1,tb_utf8,tb_gbk,编码分别为latin1/utf8/gbk “你好a”字符串编码如下GBK : %C4%E3 %BA%C3 %61UTF-8 : %E4%BD%A0 %E5%A5%BD %61 测试代码如下 <?php //fileencoding=gb2312 mysql_query("set names gbk"); mysql_query("insert into test.tb_latin values('gbk', '

【java】获取当前环境属性及编码乱码示例

1 package 字符编码; 2 3 import java.io.File; 4 import java.io.FileOutputStream; 5 import java.io.IOException; 6 import java.io.OutputStream; 7 import java.io.UnsupportedEncodingException; 8 9 public class TestGetProperties { 10 public static void main(St

PHP乱码问题,UTF-8乱码常见问题小结 linux-windows 文件编码乱码问题

一.HTML页面转UTF-8编码问题 1.在head后,title前加入一行: <meta http-equiv='Content-Type' content='text/html; charset=utf-8' /> 顺序不能错,一定要在 显示的标题有可能是乱码! 2.html文件编码问题: 点击编辑器的菜单:“文件”->“另存为”,可以看到当前文件的编码,确保文件编码为:UTF-8, 如果是ANSI,需要将编码改成:UTF-8. 3.HTML文件头BOM问题: 将文件从其他的编码转换