为什么用form表单上传的file文件内容不是乱码,但是form的一般input元素输入中文却乱码了?

form表单信息:

<form method="post" action="hi" enctype="multipart/form-data" >
    name:<input name="xingming"/><br/>
    password:<input name = "pwd"/><br/>
    file:<input name = "wenjian" type="file"/><br/>
    <input type="submit" value="提交啦">
</form>

servlet获取代码:

req.setCharacterEncoding("gb2312");
        resp.setCharacterEncoding("UTF-8");
        resp.setContentType("text/html;charset=UTF-8");
        ServletInputStream sis = req.getInputStream();  
        byte[] buf = new byte[1024];
        int flag = 0;
        while((flag = sis.readLine(buf, 0, 1024)) != -1){
            String line = new String (buf,0,flag);
            resp.getWriter().write(line+"<br/>");
        }
        sis.close();

传入信息:
图片说明

得到信息:

图片说明

不知道怎么将input里的中文怎么读出来??????

我的意思是:上传的那个文件是可以读出来的(不乱码),但是我要得到form里简单input里的值就出现了乱码,如图:
图片说明

3个回答

这个你如果是用post 方式提交数据的话,默认是使用utf-8来编码数据的,所以那个开头req.setCharacterEncoding("gb2312");我觉得应该改为req.setCharacterEncoding("utf-8");

1.有一种可能是应为你上传的文件格式不是UTF-8的,将文件另存格式改为UTF-8试试。
2.如果不行的话,你将UTF-8改为utf-8,form表达也改成:

<form method="post" action="..." accept-charset="utf-8"> ... </form>

试试

1.文件编码要是utf-8。
2.文件有文件头,把文件头清一下。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
上传word文件内容乱码
上传TXT文件后,再打开没有问题。但上传word文件后,打开里面内容就变成了乱码rnrn```rn@ResponseBodyrn @RequestMapping(value = "upload", method = RequestMethod.POST)rn public Object uploadCon(rn HttpServletRequest request,rn HttpServletResponse response,rn MultipartFile file,rn Contract contract) throws IOException rnrn Map map = new HashMap();rn File fileDir = new File(UPLOAD_FILE_PATH);rn // 当目录不存在时创建rn if (!fileDir.exists()) rn fileDir.mkdir();rn rnrn FileWriter fileWriter = new FileWriter(UPLOAD_FILE_PATHrn + file.getOriginalFilename());rnrn map.put("c_content", UPLOAD_FILE_PATH + file.getOriginalFilename());rn map.put("c_filenm", file.getOriginalFilename());rn rn System.out.println(UPLOAD_FILE_PATH + file.getOriginalFilename());rnrn InputStream inputStream = file.getInputStream();rn InputStreamReader inputStreamReader = new InputStreamReader(rn inputStream, "UTF-8");rn BufferedReader bufferedReader = new BufferedReader(inputStreamReader);rn rn JSONObject resObj = new JSONObject();rn resObj.put("code", 0);rn resObj.put("data", map);rn resObj.put("msg", "ok");rnrn int hasRead = 0;rn char[] buff2 = new char[1024];rn while ((hasRead = bufferedReader.read(buff2)) > 0) rn fileWriter.write(buff2);rn rnrn fileWriter.close();rn bufferedReader.close();rnrn System.out.println("上传成功");rn return resObj;rn rnrn```
BinaryWrite输入文件内容乱码
Response.Buffer = false;rnResponse.ContentType = "application/octet-stream";rnResponse.AddHeader("Content-Disposition","attachment;filename=export.txt");rnResponse.BinaryWrite(System.Text.Encoding.ASCII.GetBytes("中文"));rnResponse.End();rnrn执行这句输出了一个txt文件,但是打开看中文全变成????号了rn如何解决?前提不能编码,因为在txt里要看到实际的中文,不能编码后的中文rnweb.config里编码已经全改成了GB2312了
Python:input输入中文,print输出乱码
我将在学习Python的路上,一路狂奔…… 我的python学习虽说是刚刚起步,可是跳的坑却是真多啊。 如下的代码:#coding=utf-8 guess = input("请输入你猜测的数字: ") print(guess)编码设置的是utf-8 输入的中文,输出的是乱码请输入你猜测的数字: 好的 濂界殑排查原因: 集成开发环境,eclipse+pydev+python eclips
form表单乱码
<%rn if(request.getParameter("msg")!=null) rn rn System.out.println(request.getParameter("msg"));rn rn %>rn rn rn rn rn rn 意见及建议:rn rn rn rn rn rn rn rn rnrn在文本框中输入中文怎么得到的是乱码,jsp编码是UTF-8 谢谢各位大侠!
为什么用Dreamweaver MX 2004输入中文时会出现乱码?
为什么用Dreamweaver MX 2004输入中文时会出现乱码?rn有时候,用Dreamweaver MX 2004时,当时输入中文,非常正常,可是保存退出后再进入时,就会出现乱码,而用浏览器查看时,却还是正常,但是对我再次编辑时很不方便,请问我该怎么办?rn例如: 中有一表格,“新闻动态”rn 在中,时,就会出现乱码。 rn 1???D??¢rn如何解决,谢谢了!
上传的内容为乱码????
我的服务器是日文版xp,采用的数据库是access,其中有文件上传的部分,上传的文件是正确的,但是和文件选择页面一起的说明内容()提交到insert页面写到数据库后就成了乱码,请问有什么好的解决方法吗?
写入文件内容为何为乱码
#includern#includern#includern#includern#includern#includern#includern#includernrnusing namespace std;rnsetWord;rnrn//按给定的标点来拆分单词rnvoid SplitString(const string&str)rnrn size_t nlen = str.length();rn char *strDest = new char[nlen + 1];rn strcpy(strDest,str.c_str());rn char *flag =",.!:<>?";rnrn char *p = strtok(strDest,flag);rn while(p)rn rn //cout<ii(ifs);rn istream_iteratoreof;rn for_each(ii,eof,SplitString);rnrn //将文件中分离的单词写入到文件中rn ofstream ofs("c:\\word.txt",ios_base::app);rn if (!ofs.is_open())rn rn cout<<"open file failed\n";rn return 0;rn rn ostream_iteratoroo(ofs,"\n");rn copy(Word.begin(),Word.end(),oo); //为何写入文件中的单词为乱码?rnrn ifs.close();rn ofs.close();rn system("pause");rn return 0;rnrnrn//开发环境 vs2005, XP sp2rn//写入文件中的结果 用其它文本文件打开也是乱码rn//O:rn//:rn//?rn//饾:rn//萚:rn//饾:rn//O:rnrn//copy 是否像下面这个样子呢?rn//templatern//void copy(T first, T last, U out)rn//rn// while (first != last)rn// rn// *out++=*first++;rn// rn//
resteasy 上传附件 form表单里input的汉字内容乱码
[code=text]rn rn rn rn rn rn rn[/code]rnrn[code=java]rn@POSTrn @Path("/add")rn @Consumes("multipart/form-data;")rn @Produces("application/json; charset=utf-8")rn public Map addProduct(@Context HttpServletRequest request,rn @MultipartForm ProductElement element) rn LOGGER.info("Start.");rn[/code]rnrn后台接收到请求后,chinese的内容再在element中是乱码,因为上传使用的是rest自带的,所以使用filter的相关处理或重写方式不适用。不知道是否是resteasy将数据封装到element时就乱码了rnrn请各位帮帮忙,看下这里的乱码如何解决,谢谢
中文为乱码的问题
数据库是SQL SERVER 2000 英文版。rn企业管理器中中文字段为乱码,格式如下:rn³ÉÆ·S1110(άÐÞ¼þ)¸õ³Ärn³ÉÆ·CS195׶Ãærn用查询分析器查看,如果把“执行字符数据的转换”去掉,能正常显示,否则为乱码。rn字段类型改为NVARCHAR,无效。rn请问高手
乱码!!ajax传到后台的中文为乱码
JSP页面的编码是GBK,我用xmlHttpRequest传参数到后台,当参数中有中文时后台得到的就是乱码,我在后台通过new String(para.getBytes("ISO8859_1"),GBK)得到的也是乱码,试了好几个还是不行,不知道怎么解决
使用bootstrap file input 上传Excel预览的时候出现乱码
[code=html]rnrnrn rn rn rn rn Excel文件上传rn rn rn rn rn rn 请选择要导入的Excel文件:rn rn rn rn rnrnrn rn[/code]rn[img=https://img-bbs.csdn.net/upload/201711/24/1511514526_736545.png][/img]rn在Spring MVC中已经配置了编码格式rnrn[img=https://img-bbs.csdn.net/upload/201711/24/1511514557_912728.png][/img]rn如果点击上传的话后台不会出现乱码rn[img=https://img-bbs.csdn.net/upload/201711/24/1511514582_388270.png][/img]rn这是后台的数据,, 可是在前台预览的时候就会出现乱码.
form 提交的数据为乱码?
[code=Java]OrgActionForm orgForm = (OrgActionForm) form;rn rn Organization org = new Organization();rn rn BeanUtils.copyProperties(org, orgForm);rnrn this.orgManager.addOrg(org, orgForm.getParentId());rnrn return mapping.findForward("pub_add_success");[/code]rnrnorgForm的数据室乱码,jsp页面采用的是gbk编码方式,mysql数据库编码方式也是gbk,rnrn在web.xml文件中加了一段过滤代码rn[code=XML]rnrn hibernateFilterrn org.springframework.orm.hibernate3.support.OpenSessionInViewFilterrn rn rn hibernateFilterrn /*rn rn[/code]rnrnrn问一下 为什么form提交的数据还是乱码? 出现的乱码在action里当然可以通过转码方式进行转换,但问题是rn使用rnBeanUtils.copyProperties(org, orgForm);rn如何转码?rn我不想一个一个属性转换》
fckeditor上传中文图片乱码
我的是fckeditor2.3版本的!
上传中文文件出现乱码
是用iconv函数吗?怎么用??
为什么用javascript提交表单后,取出的中文为乱码
javascript中的提交表单代码:rndocument.queryform.action="xxx.jsp";rndocument.queryform.submit();rnrnxxx.jsp中的代码rnrequest.setCharacterEncoding("gb2312");rnString szTitleQuery=request.getParameter("txtTitle");rnString szContentQuery=request.getParameter("txtContent");rnrn取出英文可以,用提交按钮提交表单也可以正确取出中文。rn怎么解决,先谢了
solaris系统DiskFileUpload上传文件内容乱码的问题
用APACHE的DiskFileUpload 组件上传一个文本文件,但是文件内容(不是文件名称)的中文部分传上去之后变成乱码了.请高手们帮忙啊.系统是solaris.在WIN系统上是正常的.
为什么用JSP取出数据为乱码?
我的是ORACLE8。05,中文的,取出的中文数据都是?号,希望高手指教》
导出数据后不是乱码,导入后却成了乱码
比如我用:select * from userlist into outfile 'c:/userlist.txt';这时'c:/userlist.txt'中的中文不是乱码rnrn然后我再用:load data infile 'c:/userlist.txt' into table userlist;这时Select * from userlist后就成乱码了rnrn这样数据就成了乱码,当我在PHP程序中取出数据时,rn明明mysql_query("set names 'gbk'");或mysql_query("set names 'utf8'")可还是乱码,rn大家帮我想想该怎么解决这个问题rn
一会乱码一会不是乱码
我的文件编码是gbk的,我用file_get_contents获取页面的时候,有时候是乱码,有时候又不是rnrn[code=PHP]rn$content=file_get_contents('http://bj.ganji.com/jiaoyou5/09032721_424301.htm');rn$content=mb_convert_encoding($content,'gbk','utf-8');rnecho $content;rn[/code]
richtextbox输入中文很正常,但是赋中文的值会出乱码
在日文系统里面,richtextbox输入中文很正常,但是对它赋值,如果是中文会出乱码,如果是日文和英文当然没有问题。想不通………………
为什么Form表单提交不是乱码,而ajax提交会是乱码?
form表单提交就不说了,ajax提交表单:rn[code=javascript]rn var data = $("#myForm").serialize();rn //实际上serialize()方法会将中文编码一次,提交时再用encodeURI方法将data再编码一次:rn $.ajax(rn async : false,rn type : "post",rn dataType : "json",rn url : url + "&" + encodeURI(data),rn contentType : "application/x-www-form-urlencoded; charset=utf-8",rn success : function(result) rn reflashTable(result);rn ,rn error : function(XMLHttpResponse) rn alert("出错了。");rn rn );rn[/code]rn服务器端:rn[code=java]rn public void setPlayername(String playername) rn try rn this.playername = playername == null ? null : java.net.URLDecoder.decode(playername.trim(), "UTF-8");rn catch (UnsupportedEncodingException e) rn System.out.println("setPlayername decode utf-8 Error!");rn rn rn[/code]rn没错这样是能够正常显示的。rn可我就搞不明白了,serialize()之后的值实际上与java.net.URLEncoder.encode()的值是相等的,如果不进行第2次编码,那么tomcat在接收时decode一次后理应是正确的值,为什么就成乱码了呢?而为什么使用form表单提交却不用encode服务器也能正确接收?
怎样才能严格判断输入的事实中文字符而 不是一般乱码?
要求用户输入中文时,经常会有人输入很多乱码,如何才能严格限制对输入进行检查??
为什么form表单里的中文是乱码
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>rn<%@ page contentType="text/html;charset=gb2312"%>rn<%rnString path = request.getContextPath();rnString basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";rn%>rnrnrnrn rn rn rn My JSP 'add.jsp' starting pagern rn rn rn rn rn rn rnrn rn rn rn rn 用户注册 rn rn rn rn rn 用户名:rn rn rn rn rn rn rn rn 年龄:rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rnrnrn <% rn out.print("JSP的中文处理,测试"); rn %>rnrnrn rnrnrnrn-----------------------------------------------------------rn为什么我在用户名里输入中文,提交到后台,显示的是问号(后台程序有System.out.println(request.getParameter("userName"));),而 out.print("JSP的中文处理,测试"); 这句能正常显示呢?rnrn
上传乱码
ASP 下 使用upload_5xsoft.inc上传中文乱码,使用utf-8编码,请大家帮帮忙,谢谢
notepad++输入中文是乱码
小编在使用notepad++时输入中文时显示却是一个个方框,但用记事本却没有问题,请问这个怎么解决呢?谢啦!
message_zh_CN.properties下输入中文出现乱码
在file下的setting中找到file encoding 然后把它所有的编码格式改为UTF-8
java输入中文数据库乱码
在没有使用过滤器的情况下乱码问题解决: javaee乱码问题的解决。 1,MYSQL数据库和Myeclipse之间传递数据出现乱码   检查数据库里每张表和每个字段的编码格式是不是utf-8,检查方法:   show variables like "%colla%";   show variables like "%char%";   通过这两条命令来检测mysql数据库中的字段以及表
ehlib4.2.16,输入中文变乱码
使用DBGridEh,但输入中文后会自动变成##rn修改了FONT属性也没用rn求助啊,谢谢了rn
输入中文变乱码的问题
我在我的机子上已经把字符集的utf-8改为了gb2312,而且已经没有问题了。但是我的程序是要发布到服务器上的,发布之后再次运行输入中文保存后显示的还是乱码,我现在.NET联的数据库和服务器上的连的是同一个。rn这是怎么回事呢?请教中。。。。
输入是UTF8的,输出也是UTF8的,但是却成了乱码
rn有一个HTML页,有一个表单,一个input框,一个submit按钮。提交这个网页后,打开一个JSP页,显示刚输入的值。但就这么点事,就有问题了。 rn下面是代码: rn rn rn rn test3.10.htm rn rn rn rn 姓名 rn rn rn rn rn rn rnJSP文件是这样的:rn<%@ page contentType="text/html; charset=UTF-8" %>rn rn rn rn display.jsp rn rn rn<% rn String user; rn user=request.getParameter("username"); rn out.println("username: "+user+" "); rn%> rn rn rn rn在HTML页,我右键看编码,UTF8被选中,这时输入进框中的中文可以正常显示,但是到了DISPLAY.JSP的输出页,就出来了乱码,这时UTF8也还是被选中的状态,请问这是哪写错了呢?谢谢! rn
js的中文注释出现乱码,input val出现乱码
因为js的编码,不是UTF-8. 如果使用webstorm,在右下角有一个选项,默认为GBK,将它改为utf-8即可。
读出的文件内容竟然是乱码?????
Tryrn Dim fileinfo As New FileInfo(Application.StartupPath & "\sys.ini")rn Dim sw As StreamWriter = fileinfo.CreateTextrn Dim i As Integerrn For i = 0 To lbxLy.Items.Count - 1rn sw.WriteLine(lbxLy.Items.Item(i))rn Nextrn sw.Flush()rn sw.Close()rn MsgBox("已经将信息成功保存!", , "提示")rn Catch ex As Exceptionrn MsgBox(ex.Message, , "提示")rn End Tryrn我将它存入文件中,用下面的方法读取:rnDim fileinfo As New FileInfo(Application.StartupPath & "\sys.ini")rn Dim fs As FileStreamrn fs = fileinfo.Open(FileMode.Open)rn Dim sr As New StreamReader(fs, System.Text.Encoding.Default)rn If fs.Length > 0 Thenrn Dorn lbxLy.Items.Add(sr.ReadLine)rn Loop While sr.Peek <> -1rn End Ifrn sr.Close()rn fs.Close()rn可是添加到listbox的是乱码,文件中不是乱码.怎么回事啊 ,请指教.rn
源代码是中文没问题,但是显示的时候却显示乱码????????
源代码是中文没问题,但是显示的时候却显示乱码????????rnweb.config设置默认显示gb2312rn rn rn很头痛。。。
字符流读取中文文件内容,防止乱码
public void CountOfSurname() throws IOException{         File f=new File(&quot;D:/name.txt&quot;);         FileReader fre=new FileReader(f);         BufferedReader bre = new BufferedReader(new InputStreamReader...
为什么用get会乱码,而用post不会乱码
ex8-01.htmlrn[code=HTML]rnrnrnrn rn rn 获取客户提交的信息案例rn rn rn rn rn rn rn rn rn 姓名:rn rn rn rn rn rn rn rn 电话:rn rn rn rn rn rn rn rn rn rn rn rn rn rn rnrn[/code]rnex8-02.jsprn[code=HTML]rnrn<%@ page language="java" contentType="text/html; charset=UTF-8"rn pageEncoding="UTF-8"%>rnrnrn rn rn request对象常用方法应用案例rn rn rn rn <%rn request.setCharacterEncoding("UTF-8");rn out.println("姓名文本框提交信息:" + request.getParameter("name") + " ");rn out.println("电话文本框提交信息:" + request.getParameter("phone") + " ");rn out.println("客户端协议名和版本号:" + request.getProtocol() + " ");rn out.println("客户机名:" + request.getRemoteHost() + " ");rn out.println("客户机的IP地址:" + request.getRemoteAddr() + " ");rn out.println("客户提交信息的长度:" + request.getContentLength() + " ");rn out.println("客户提交信息的方式:" + request.getMethod() + " ");rn out.println("HTTP头文件中的Host值:" + request.getHeader("Host") + " ");rn out.println("服务器名:" + request.getServerName() + " ");rn out.println("服务器端口号:" + request.getServerPort() + " ");rn out.println("客户请求页面的文件目录:" + request.getServletPath() + " ");rn %>rn rnrn[/code]rn上面这两个文件太奇怪了,当我在ex8-01.html中用post的时候,输入中文按确定完全正常,当我用get的时候,输入中文按确定却出现乱码,这个太神奇了,求解释
用c#读取文件内容中文是乱码?
rn用的是下面的代码rnrnpublic string mystring(string textFile) rn rn// StringWriter strWriter = new StringWriter();rnrn// Console.SetOut(strWriter);rnrn string allfilestring="";rnrn try rn rn StreamReader din = File.OpenText(textFile);rn String str;rn rn rnrn while ((str=din.ReadLine()) != null) rn rn allfilestring=allfilestring+str;rn rn din.Close();rn rnrn catch rn rn// rn// strWriter.Flush();rn// strWriter.Close();rn// rn return allfilestring;rn rn rn最后检验字符串allfilestring,发现原来文件里的中文成了乱码,怎么办呢?rn请各位高手指教。rn先谢过了。
webservice传入中文为乱码
服务端和客户端的开发语言都是java,使用的axis1.4中间件。调用服务的时候,服务端接收中文都是问号。即乱码。该如何解决。数据库也是乱码。
pycharm输出中文为乱码
File->setting->File Encodings->3个地方都改成utf8
读取Oracle数据库的中文为乱码?
使用vs2005,c#做的,读取Oracle数据库时为乱码,在plsql里记取的是正常的中文
MySQLWorkbench存储中文为乱码
我在eclipse中建了一个默认utf8为字符集的工程,数据库是用mysqlWorkbench建的,建好后,我也把数据库和表右键点Alter scheme和Alter table将字符集换成utf8 default,但是插入数据库的时候汉字还是变成了????????,怎么解决呢?rn
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法

相似问题

4
java后台解决跨域访问,为什么前端还不能访问上传文件
2
Form表单中点击按钮增加一行,后端用PHP如何批量处理
16
form 表单提交大量字段值该咋接收??
21
form表单提交,文本域中的数据丢失,保存不到数据库。
5
SSM框架下,怎么将从数据库查询的数据显示在form表单里?
13
form表单post提交数据时的小疑问
19
关于form表单,刷新页面会自动提交的问题.
2
[新手]关于struts2文件上传怎么解决文件名乱码问题
5
easyui form表单提交返回值为空
2
PHP 文件下载,下载后的文件和源文件内容不一样
4
javascrpt语言能不能获取java语言运行的结果,并且返回给form表单显示出来?
11
form表单里面的数据提交到java后台的问题
2
一个form表单里面的文件上传类型的input标签为什么上传的只有第一行的?
8
使用java的Http请求里的Url对象调用第三方接口返回的数据中文乱码
1
不使用serlet和jsp或者controller 后端随便写一个类的话怎么获取前端form表单的值
1
求助前辈:python使用post请求上传txt文件到网站,上传成功,但是内容为空
2
form表单同事提交多个文件盒文本框中数据,后台该输入接收数据?
5
form表单中的input输入框无法被鼠标点击获取焦点?
0
selenium中什么时候用form的submit()什么时候用表单中提交按钮的click()
1
通过form表单提交的方法将数据传给java后台内部类该如何实现?