遇到了一个问题,在开发时上传文件时,文件的中文名上传的是中文乱码,所解决方法:

文章转载自:https://blog.csdn.net/lengjinghk/article/details/51938644

一、对Tomcat_HOME/conf/server.xml文件进行配置(本机的完整目录为D:/Users/Administrator/Tomcat/apache-tomcat-7.0.54/conf/server.xml)
核心代码如下(其中最后一句是自己加的):

<Connector executor="tomcatThreadPool"port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"URIEncoding="utf-8" />-->

这种方式一般不建议使用,因为它修改的是Tomcat平台的编码,而业内没人对其不修改,如果人为修改会影响其他项目的运行。


二、逆向编码解码还原法
之所以会出现乱码,是因为浏览器将中文传给tomcat时,tomcat以默认的iso8859-1方式对其解码,而iso8859-1不属于中文码表,故而出现乱码。根据这个原理可逆向还原。
如:

byte buf[] = request.getParameter("name").getBytes("iso8859-1");
String name = new String(buf,"GBK");

这样得到的name便是前台传来的正确的中文参数了
这种方式比较偏向底层,而且有一个弊端,就是当浏览器传送的中文参数很多时,需要一个个设置,比较罗嗦,不利于节省时间。


三、将浏览器的表单的提交方式设为post方式,同时在servlet里在接受参数前将request的编码设置为GBK或者UTF-8。
前台形如:

<form action="login.jsp" method="post">用户名:<input type="text" name="name"><br/><br/>密    码:<input type="text" name="pwd"><br/><br/><input type="submit" value="登录">
</form>

后台形如:

request.setCharacterEncoding("utf-8");
String name = request.getParameter("name");

这样也能正确地接受中文参数了。当然,这种方式也存在弊端,试想下当项目发布后,如果需要修改编码为GBK,则要修改源代码,而对客户而言,这需要反编译等步骤直接修改代码,有点困难。

四、通过web项目的WebRoot/WEB-INF/web.xml文件进行配置参数,同时可在servlet中进行读取。
web.xml的示例核心代码如下:

<servlet>
    <servlet-name>login</servlet-name>
    <servlet-class>cn.hncu.servlets.LoginServlet</servlet-class>
    <init-param>
        <param-name>character</param-name>
        <param-value>GBK</param-value>
    </init-param>
</servlet>12345678

<servlet><servlet-name>login</servlet-name><servlet-class>cn.hncu.servlets.LoginServlet</servlet-class><init-param><param-name>character</param-name><param-value>GBK</param-value></init-param>
</servlet>

servlet示例核心代码如下:

public void init(ServletConfig config) throws ServletException {String charset = config.getInitParameter("character");System.out.println(charset);
}

这种方法弥补了方法3的缺陷,方便后期维护和修改,用户修改时不需要改源代码,只需修改web.xml即可。

上传文件时,文件名中文乱码相关推荐

  1. 使用Fastdfs上传文件时出现中文乱码。工具类中的this.getClass().getResource(“/“).getPath()获取配置文件的路径时中文乱码。

    报错: Exception in thread "main" org.csource.common.MyException: item "tracker_server&q ...

  2. JSP利用servlet上传文件时的中文乱码问题

    JSP处理乱码问题是一个痛苦的过程.这次servlet传送文件的乱码折腾了我至少两周. 总结如下: 1.第一类乱码: 就是文件传送过来的文件名等是乱码:但是servlet输出的页面汉字正常显示. 解决 ...

  3. php 上传文件名乱码,php上传文件时文件名乱码怎么办

    php上传文件时文件名乱码的解决方法:首先在脚本头部添加[header("Content-type: text/html; charset=utf-8");]:然后利用iconv( ...

  4. 文件上传,服务器文件名中文乱码

    日前刚刚解决的乱码问题,在windows本地调用文件上传接口时,中文名显示没问题,但是一旦文件上传到Linux服务器之后,就会出现中文乱码问题,如中文名变成???等,看了很久找到问题,以此记录一下解决 ...

  5. Linux上传文件时文件名自动加引号问题

    往Linux系统上传文件时,发现上传的文件总是自动添加了引号,虽然使用连接工具的文件目录可视化工具看到的文件是正常的,但是通过指令查看的文件名是有引号的,如下图所示: 1.选择一个文件名带空格的文件, ...

  6. WINDOWS上传文件到LINUX中文乱码

    现象:WINDOWS上传文件到LINUX后,中文文件名乱码,中文内容乱码 解决:首先考虑到的应该是字符编码不一致导致,其次再看是否没安装中文包 1:检查是否安装convmv工具 [oracle@res ...

  7. java下载文件时文件名中文乱码

    下载文件时中文乱码是一个很常见的问题, 这不是第一次,但我希望它是最后一次了 这是个让人很头疼的问题, 明明在后台文件名还是正常的,为什么下载后文件名就乱码了呢 为什么会乱码:因为浏览器的编码和后台传 ...

  8. xshell用rz上传文件,彻底解决乱码

    1 安装 yum -y install lrzsz 2 问题 使用rz上传文件时,出现乱码,上传失败. 3 原因 文件中包含控制字符 4 解决方法 使用 rz -be -b:–binary 用bina ...

  9. 解决ServletFileUpload上传文件时,获取上传文件名出现中文乱码问题

    解决ServletFileUpload上传文件时,获取上传文件名出现中文乱码问题 在我们使用ServletFileUpload上传文件时,我们通常会获取其上传的文件名,然而当文件名包含中文时,便可能出 ...

最新文章

  1. 数学符号的读法和英文表示
  2. Codeforces 491B. New York Hotel 最远曼哈顿距离
  3. c语言中函数(linux命令查看依赖类库),数组(内存存储是连续的内存空间),Linux下查看a,a[0],a之间的值,可变数组
  4. 5G为何采纳华为力挺的Polar码?一个通信工程师的大实话
  5. 知识点1: 进度条随数据变化,并添加渐变样式
  6. 【CF1311E】Construct the Binary Tree【增量构造】【复杂度证明】
  7. 基于集成提升和 Bagging 的地下水潜力预测机器学习模型文件阅读
  8. bigdecimal 保留两位小数_一起聊聊小数的储存和运算
  9. c语言判断是否是回文字符串
  10. 一个简单又诡异的互联网变现思维(抖音赚钱)
  11. 语音控制小车运动APP(基于百度语音识别)
  12. 为什么要进行傅立叶变换?如何用Matlab实现快速傅立叶变换?
  13. 鼠标键为什么按小键盘5以及+的时候却有时变成了右键点击,如何改为左键点击
  14. JNOJ 江南在线评测系统 搭建
  15. 手机顶部有小红点_苹果手机听筒上方有红点 iphone11顶部红点闪烁
  16. 转:CRF++总结1
  17. 让心爱的TA不再孤单——Python微信聊天机器人
  18. 物联网发展预期与展望
  19. d3d透视逆向篇:第6课 通过特征码定位D3D函数入口地址
  20. The song from the Chef

热门文章

  1. Zxing和QR CODE 生成与解析二维码实例(普通篇)
  2. 75 道 JavaScript 面试题
  3. SSH连接越狱iPhone
  4. js blur失焦事件与click点击事件冲突
  5. golang调用网易云API
  6. Java仿腾讯视频流媒体点播网站开发实战
  7. PHP2019参考文献,2019论文参考文献格式
  8. Win8安装教程!笔记本用U盘安装Win8只需三步
  9. 微信电脑版无法获取二维码
  10. 推荐场景下融合多模态信息的内容召回模型