关于SmartUpload工具包的中文乱码问题,输出在服务端的中文显示是乱码,而英文数字,没有任何问题,我在网上看了其他人的问题和回答,让我觉得有道理,却又用不着,最后在多次试验中,终于找到了问题所在。接下来给大家说说我的中文乱码问题。

首先看看jsp页面的编码和混合表单数据

 <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<base href="/MvcPro/">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>测试</title>
<script type="text/javascript" src="js/jquery.min.js"></script>
</head>
<body>
<form action="emp/add" method="POST" enctype="multipart/form-data">
<fieldset>
<legend>请注册</legend>
用户名:<input type="text" name="username" value="李四"><br><br>
薪&nbsp;&nbsp;&nbsp;资:<input type="text" name="sal" value="5000"><br><br>
职&nbsp;&nbsp;&nbsp;位:<input type="text" name="job" value="包工头"><br><br>
佣&nbsp;&nbsp;&nbsp;金:<input type="text" name="comm" value="900"><br><br>
部门编号:<input type="text" name="deptno" value="50"><br><br>
照&nbsp;&nbsp;&nbsp;片:<input type="file" name="pic"><br><br>
<input type="submit" value="提交">
<input type="reset" value="重置">
</fieldset>
</form>
</body>
</html>

这里看出jsp页面编码使用的是UTF-8

然后看看Servlet的原来输出部分的代码

 //SmartUpload实例化在抽象父类。
super.saveFile(req, resp);
//通过SmartUpload的实例化对象smart提取出request,在获取对应的数据。
String name =super.smart.getRequest().getParameter("username");
String sal = super.smart.getRequest().getParameter("sal");
String comm = super.smart.getRequest().getParameter("comm");
String job = super.smart.getRequest().getParameter("job");
System.out.println(comm);
//输出
System.out.println("名字:"+name+",职位:"+job);

结果是

其实这里的问题很简单,我自己也设置了request的编码过滤器,然后使用了request.setCharacterEncoding("utf-8");都没有用。

各位注意,这里的编码设置的是HttpServletRequest类的编码,而这边enctype="multipart/form-data"的使用,我们传输到服务器端的数据不是用的HttpServletRequest,所以编码设置没起作用。

而且通过SmartUpload.getrequest()获得的对象是request对象不是HttpServletRequest类对象。所以从request中获取的字符串根本就没有进行UTF-8转码。直接输出就会乱码。

然后我通过字符串的构造方法new String(byte byte[],Character)进行了转码测试:

结果中文就没有乱码了,所以最终的乱码原因就是JSP网页代码时UTF-8编码--》Tomcat的默认转码成其他的格式--》服务端再进行UTF-8转码这条路中的最后一步我们没有进行转码。

SmartUpload工具包的中文乱码问题详解的更多相关文章

  1. MySQL之乱码问题解决详解

    今天在写一个项目的时候,在数据库中手动插入数据不会产生中文乱码,但是通过javaWeb却出现乱码,把提交表单和响应中的乱码问题解决后,还是乱码.所以我锁定一定是我的mysql数据库中出现了乱码的现象.

  2. 中文乱码 URLEncode之后,后台获取仍是乱码问题详解

    java中获取到参数的时候,这时候默认使用的是iso8859-1进行解码的,那么就再使用URLEncode的encoe方法对其进行编码一次,编码格式使用iso8859-1,这样我们就获得最初使用utf ...

  3. SmartUpload控件 中文乱码问题解决办法

    (乱码一般是三码不统一,但是当我们使用插件的时候,我们页面,后台,还有插件之间的转码不一定统一,导致了乱码这一问题) 首先,SmartUpload 的使用网上多的很,在这里就不在赘述,主要解决为什么乱 ...

  4. PHPExcel 中文使用手册详解

    /** * * execl数据导出 * 应用场景:订单导出 * @param string $title 模型名(如Member),用于导出生成文件名的前缀 * @param array $cellN ...

  5. java编码,乱码问题详解

    一.常见的编码格式 1.ASCII 基础编码,英文和西欧字符. 用一个字节的低7位表示,一共128个. 0~13是控制字符如换行.回车.删除等,32~126是打印字符,键盘输入. 2.IOS-8859 ...

  6. hanlp源码解析之中文分词算法详解

    词图 词图指的是句子中所有词可能构成的图.如果一个词A的下一个词可能是B的话,那么A和B之间具有一条路径E(A,B).一个词可能有多个后续,同时也可能有多个前驱,它们构成的图我称作词图. 需要稀疏2维 ...

  7. PHPExcel 中文使用手册详解 二

    $objPHPExcel = new \PHPExcel(); //定义配置 $topNumber = 2;//表头有几行占用 $xlsTitle = iconv('utf-8', 'gb2312', ...

  8. linux中文乱码问题及locale详解

    一.修改系统默认语言及中文乱码问题记录系统默认使用语言的文件是/etc/sysconfig/i18n,如果默认安装的是中文的系统,i18n的内容如下: LANG="zh_CN.UTF-8&q ...

  9. JpGraph使用详解之中文乱码解决方法

    在前面的JpGraph使用详解这篇文章,已经对JpGraph的使用方法作了详细的交代,前面说好的,接下来解决中文乱码. JpGraph为什么会出现中文乱码 在JpGraph中默认是要把字符串转成utf ...

随机推荐

  1. go语言调度器源代码情景分析之三:内存

    本文是<go调度器源代码情景分析>系列 第一章 预备知识的第2小节. 内存是计算机系统的存储设备,其主要作用是协助CPU在执行程序时存储数据和指令. 内存由大量内存单元组成,内存单元大小为 ...

  2. [区块链\理解BTCD源码]GO语言实现一个区块链原型

    摘要 本文构建了一个使用工作量证明机制(POW)的类BTC的区块链.将区块链持久化到一个Bolt数据库中,然后会提供一个简单的命令行接口,用来完成一些与区块链的交互操作.这篇文章目的是希望帮助大家理解 ...

  3. java游戏开发杂谈 - 线程

    线程,让游戏拥有了动态变化的能力. java的图形界面,在启动的时候,就开始了一个线程. 这个线程负责处理:JFrame.JPanel等的绘制.事件处理. 它是由操作系统调用的,在程序启动时开启,程序 ...

  4. Python:logging 的巧妙设计

    引言 logging 的基本用法网上很多,这里就不介绍了.在引入正文之前,先来看一个需求: 假设需要将某功能封装成类库供他人使用,如何处理类库中的日志? 数年前在一个 C# 开发的项目中,我用了这样的 ...

  5. java基础( 九)-----深入分析Java的序列化与反序列化

    序列化是一种对象持久化的手段.普遍应用在网络传输.RMI等场景中.本文通过分析ArrayList的序列化来介绍Java序列化的相关内容.主要涉及到以下几个问题: 怎么实现Java的序列化 为什么实现了 ...

  6. springcloud和springboot是什么关系?

    [学习笔记] 4)springcloud和springboot是什么关系? 马克-to-win@马克java社区:springboot可以快速开发单个微服务.springcloud是一个基于sprin ...

  7. [转]POJ1006: 中国剩余定理的完美演绎

    Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 117973   Accepted: 37026 Des ...

  8. 4. [mmc subsystem] mmc core(第四章)——host模块说明

    零.说明 对应代码drivers/mmc/core/host.c,drivers/mmc/core/host.h. 为底层host controller driver实现mmc host的申请以及注册 ...

  9. 第八周LINUX学习笔记

    vsftpd丶NFS丶SAMBA nfs基于rpcsamba基于cifs(smb)  DRBD: ftp:File Transfer protocol 文件传输协议 两个连接:       tcp:命 ...

  10. ZJOI2019一轮游记

    Preface 期待已久的省选终于开始了233,关于之前的一些内容,在ZJOI2019一轮停课刷题记录都可以找到,这里不再赘述 ZJOI2019,Bless All Day -1 今天难得有休息,昨晚 ...