SmartUpload工具包的中文乱码问题详解
关于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>
薪 资:<input type="text" name="sal" value="5000"><br><br>
职 位:<input type="text" name="job" value="包工头"><br><br>
佣 金:<input type="text" name="comm" value="900"><br><br>
部门编号:<input type="text" name="deptno" value="50"><br><br>
照 片:<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工具包的中文乱码问题详解的更多相关文章
- MySQL之乱码问题解决详解
今天在写一个项目的时候,在数据库中手动插入数据不会产生中文乱码,但是通过javaWeb却出现乱码,把提交表单和响应中的乱码问题解决后,还是乱码.所以我锁定一定是我的mysql数据库中出现了乱码的现象.
- 中文乱码 URLEncode之后,后台获取仍是乱码问题详解
java中获取到参数的时候,这时候默认使用的是iso8859-1进行解码的,那么就再使用URLEncode的encoe方法对其进行编码一次,编码格式使用iso8859-1,这样我们就获得最初使用utf ...
- SmartUpload控件 中文乱码问题解决办法
(乱码一般是三码不统一,但是当我们使用插件的时候,我们页面,后台,还有插件之间的转码不一定统一,导致了乱码这一问题) 首先,SmartUpload 的使用网上多的很,在这里就不在赘述,主要解决为什么乱 ...
- PHPExcel 中文使用手册详解
/** * * execl数据导出 * 应用场景:订单导出 * @param string $title 模型名(如Member),用于导出生成文件名的前缀 * @param array $cellN ...
- java编码,乱码问题详解
一.常见的编码格式 1.ASCII 基础编码,英文和西欧字符. 用一个字节的低7位表示,一共128个. 0~13是控制字符如换行.回车.删除等,32~126是打印字符,键盘输入. 2.IOS-8859 ...
- hanlp源码解析之中文分词算法详解
词图 词图指的是句子中所有词可能构成的图.如果一个词A的下一个词可能是B的话,那么A和B之间具有一条路径E(A,B).一个词可能有多个后续,同时也可能有多个前驱,它们构成的图我称作词图. 需要稀疏2维 ...
- PHPExcel 中文使用手册详解 二
$objPHPExcel = new \PHPExcel(); //定义配置 $topNumber = 2;//表头有几行占用 $xlsTitle = iconv('utf-8', 'gb2312', ...
- linux中文乱码问题及locale详解
一.修改系统默认语言及中文乱码问题记录系统默认使用语言的文件是/etc/sysconfig/i18n,如果默认安装的是中文的系统,i18n的内容如下: LANG="zh_CN.UTF-8&q ...
- JpGraph使用详解之中文乱码解决方法
在前面的JpGraph使用详解这篇文章,已经对JpGraph的使用方法作了详细的交代,前面说好的,接下来解决中文乱码. JpGraph为什么会出现中文乱码 在JpGraph中默认是要把字符串转成utf ...
随机推荐
- 禁用后退键 BackSpace
<script language="JavaScript">document.onkeydown = check;function check(e) { var ...
- web service 的跨语言特性
1.用java语言创建一个的服务(Myservice) ①编写一个Imyservice接口(注解不能少) @WebService public interface Imyservice { publi ...
- Ethercat 学习总结一:协议总结
原文地址:https://blog.csdn.net/qq923433160/article/details/83781812 EtherCAT 总线的国家标准相关资料,比较详细介绍了协议: http ...
- LeetCode算法题-Number of Lines To Write String(Java实现)
这是悦乐书的第319次更新,第340篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第188题(顺位题号是806).我们要将给定字符串S的字母从左到右写成行.每行最大宽度为 ...
- 通过JDK常用工具监控Java进程的内存占用情况
目录 1 JDK 工具的使用 2 查看 GC 日志信息 3 添加 JMS 远程监控 Tomcat是一款常用的Web容器, 它是运行在 JVM(Java Virtual Machine) 中的一个Jav ...
- mysql实现主从备份
mysql 主从备份的原理: 主服务器在做数据库操作的时候将所有的操作通过日志记录在binlog里面,有专门的文件存放.如localhost-bin.000003,这种,从服务器 和主服务配置好关系后 ...
- [翻译 EF Core in Action 2.2] 创建应用程序的数据库上下文
Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...
- 深度解密Go语言之关于 interface 的10个问题
目录 1. Go 语言与鸭子类型的关系 2. 值接收者和指针接收者的区别 方法 值接收者和指针接收者 两者分别在何时使用 3. iface 和 eface 的区别是什么 4. 接口的动态类型和动态值 ...
- python微信聊天机器人改进版,定时或触发抓取天气预报、励志语录等,向好友推送
最近想着做一个微信机器人,主要想要实现能够每天定时推送天气预报或励志语录,励志语录要每天有自动更新,定时或当有好友回复时,能够随机推送不同的内容.于是开始了分析思路.博主是采用了多线程群发,因为微信对 ...
- 正则表达式在Java中的使用
目录 介绍 从简单例子认识正则表达式匹配 Java中对正则表达式的支持(各种语言有相应的实现) 初步认识 . + * ? 范围 认识\s \w \d - 下面介绍数字和字母的正则表达, 这是编程中使用 ...