form表单post发送的中文如何解码(form表单提交中文乱码)
2019-07-13 关于form-data的上传中文文件乱码的解决办法?
layout: post
title: 关于form-data的上传中文文件乱码的解决办法?
date: 2019-07-13 14:02:44 +0800
categories: 前端
tags: ["HTML", "springboot"]
notebook: 前端
comments: false
description: 对内容的描述
使用表单测试,如果没有 enctype=“multipart/form-data" 会出现提交类型不符合。
返回
查看文件名,乱码
解决办法,找到文件名的编码,关于ASCII,所以解码就可以了。
输出正确了
答:解码就好了

HTML form 提交表单,发邮件后,邮件中文乱码,怎么办!
应该是浏览器编码的问题
要么改成Unicode(UTF-8)
要么改成简体中文(GB-2312)
jsp 向servlet中传值中文怎么有乱码,我用的是form表单method="post"
需要转码来解决:
转码可以在页面中或是sevlet以及过滤都可以解决的,下面以页面和servlet为例:
方法一:设置 request 和 response 的编码 [ 页面编码必须为 u8 ]
request.setCharacterEncoding("UTF-8");//传值编码
response.setContentType("text/html;charset=UTF-8");//设置传输编码
方法二:
String str1=传来的数据。
String ss=new String(str1.getBytes("ISO-8859-1"),"utf-8"); //转码UTF8
如何解决Form表单乱码问题
如何解决乱码的问题? JSP和Servlet的六种中文乱码处理方法 一、表单提交时出现乱码: 在进行表单提交的时候,经常提交一些中文,自然就避免不了出现中文乱码的情况,对于表单来说有两种提交方式:get和post提交方式。所以请求的时候便有get请求和post请求。每种方式都有着不同的解决方法,之所以出现乱码,原因就在于get请求时,其传递给服务器的数据是附加在URL地址之后的;而post的请求时,其传递给服务器的数据是作为请求体的一部分传递给服务器。这也就导致了对它们所产生的乱码的处理方式是不同的。 1、客户端的get请求 对于不同的请求方式,解决乱码的问题也是不一样的,对于客户端的get请求来说,服务器端处理要想不出现乱码,解决这个问题稍微复杂一些,需要用到String类型的构造函数,其中的一个构造函数就是用指定的编码方式去解码,一般都用“UTF-8”的方式。只要在服务器端将请求得到的参数重新构造成一个字符串就行了。 经过构造之后,客户端输入中文,且表单时get请求的情况下,str就变成了中文了。 2、客户端的post请求 对于客户端的post请求来说,处理乱码的问题就比较简单了,因为请求的数据时作为请求体的一部分传递给服务器的,所以只要修改请求内的编码就行了。只要在服务器端的最开始处将请求的数据设置为“UTF-8”就行了,输入如下语句:request. setCharacterEncoding(“UTF-8”);这样用户在服务器端获取到的中文数据就不再是乱码了。 二、超链接时出现乱码(低版本浏览器不行IE6) 在Web开发中,挺多的时候都是通过超链接去传递中文参数的,这也会导致在显示的时候也会出现乱码,对于超链接来说,它实际上是向服务器端发送了一个请求,而它发出的请求是属于get请求,所以对于超链接的乱码来说,它处理乱码的方式和表单的get请求出现乱码的方式是一样的。 三、重定向时出现乱码(低版本浏览器不行IE6) 有时写上response的sendRedirect方法进行重定向时也会出现乱码,重定向时实际上也是向服务器发送了一个请求,所以解决乱码的方法和和上面是一样的。 四、浏览器版本低导致的乱码 上网的时候,有时提交的一些信息在地址栏显示的是“%2C%C6%CC%C6”的字样,其实这都是防止出现乱码进行的解决方案,如果你的浏览器是IE6或以下版本,则我们的第二种情况和第三种情况会出现乱码(尤其是当中文是奇数的时候),这就不好使了所以我们必须采用另一种比较实际的作法: 在java.net包中提供了URLEncoder类和URLDcoder类,这两个类又分别提供了encode和decode两个静态方法,分别用于进行编码和解码。我们将要传递的中文参数进行编码之后,在传递给服务器,服务器解码之后,就可以显示中文了。 进行编码:URLEncoder.encode(stuname,”UTF-8”) 传递给服务器:a href=”/1.jsp?stuname%=stuname%”传递/a 进行解码:URLDecoder.decode(stuname,”UTF-8”) 五、返回浏览器显示的乱码 在Servlet编程中,经常需要通过response对象将一些信息返回给浏览器,给我们的客户端,而我们在服务器端显示的中文,但是响应给客户端浏览器却是乱码,这主要是由于response对象的getWriter()方法返回的PrintWriter对象默认使用“ISO-8859-1”字符集编码进行Unicode字符串到字节数组的转换,由于ISO8859-1字符集中根本就没有包含中文字符,所以Java在进行转换的时候会将无效的字符编码输出给客户端,于是便出现了乱码,为此ServletResponse接口中便定义了setCharacterEncoding、setContentType等方法来指定getWriter方法返回的PrintWriter对象所使用的字符集编码,所以我们在写Servlet程序中,在调用getWriter方法之前设置这些方法的值。 只要编写Servlet文件中含有响应给客户端的信息,那么就要写上这两句话。最好写上第二句话,因为它的优先级高,它的设置结果将覆盖setContentType等方法设置的字符编码集。 六、修改Tomcat的编码 在get请求所导致乱码问题中,还有一种解决的方案,我们常用Tomcat作为运行Servlet和JSP的容器,而Tomcat内部默认的编码是ISO-8859-1,所以对于get请求方式,其传递的数据(URI)会附加在访问的资源后面,其编码是Tomcat默认的,如果修改该URI的编码,那么对于所有的get请求方式便不会出现乱码了包括上边说的重定向和超链接,在Tomcat的配置文件server.xml中找到修改Tomcat的端口的地方,在其内部加入URIEncoding属性,设置为和你的项目中所设的编码一样的值,这里全部都是UTF-8。 在编写Servlet和JSP的时候,为了避免出现乱码,最重要的就是:采用一致的编码,如果编码都一致了,肯定不会出现乱码。
Js提交form表单出现中文乱码怎么解决
accept-charset charset ???????????????????????????????????????服务器处理表单数据所接受的字符集。
enctype ????????MIME_type ?????????????????????????????????????规定表单数据在发送到服务器之前应该如何编码。
method ????????get?|?post?????????????????????????????????????规定如何发送表单数据。
如何处理get/post提交的中文乱码问题
解决中文乱码的4种方法
一、JSP页面显示乱码
下面的显示页面(display.jsp)就出现乱码:
程序代码
html
head
titleJSP的中文处理/title
meta http-equiv="Content-Type" c
/head
body
%
out.print("JSP的中文处理");
%
/body
/html
对不同的WEB服务器和不同的JDK版本,处理结果就不一样。原因:服务器使用的编码方式不同和浏览器对不同的字符显示结果不同而导致的。解决办法:在JSP页面中指定编码方式(gb2312),即在页面的第一行加上:%@ page c%,就可以消除乱码了。完整页面如下:
%@ page c%
html
head
titleJSP的中文处理/title
meta http-equiv="Content-Type" c
/head
body
%
out.print("JSP的中文处理");
%
/body
/html
二、表单提交中文时出现乱码
下面是一个提交页面(submit.jsp),代码如下:
程序代码
html
head
titleJSP的中文处理/title
meta http-equiv="Content-Type" c
/head
body
form name="form1" method="post" action="process.jsp"
div align="center"
input type="text" name="name"
input type="submit" name="Submit" value="Submit"
/div
/form
/body
/html
下面是处理页面(process.jsp)代码:
程序代码
%@ page c%
html
head
titleJSP的中文处理/title
meta http-equiv="Content-Type" c
/head
body
%=request.getParameter("name")%
/body
/html
如果submit.jsp提交英文字符能正确显示,如果提交中文时就会出现乱码。原因:浏览器默认使用UTF-8编码方式来发送请求,而UTF-8和GB2312编码方式表示字符时不一样,这样就出现了不能识别字符。解决办法:通过request.seCharacterEncoding("gb2312")对请求进行统一编码,就实现了中文的正常显示。修改后的process.jsp代码如下:
程序代码
%@ page c%
%
request.seCharacterEncoding("gb2312");
%
html
head
titleJSP的中文处理/title
meta http-equiv="Content-Type" c
/head
body
%=request.getParameter("name")%
/body
/html
三、数据库连接出现乱码
只要涉及中文的地方全部是乱码,解决办法:在数据库的数据库URL中加上useUnicode=truecharacterEncoding=GBK就OK了。
四、数据库的显示乱码
在mysql4.1.0中,varchar类型,text类型就会出现中文乱码,对于varchar类型把它设为binary属性就可以解决中文问题,对于text类型就要用一个编码转换类来处理,实现如下:
程序代码
public class Convert {
/** 把ISO-8859-1码转换成GB2312
*/
public static String ISOtoGB(String iso){
String gb;
try{
if(iso.equals("") || iso == null){
return "";
}
else{
iso = iso.trim();
gb = new String(iso.getBytes("ISO-8859-1"),"GB2312");
return gb;
}
}
catch(Exception e){
System.err.print("编码转换错误:"+e.getMessage());
return "";
}
}
}
把它编译成class,就可以调用Convert类的静态方法ISOtoGB()来转换编码。