• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >JSP > jsp SmartUpload 中文乱码问题解决

jsp SmartUpload 中文乱码问题解决

作者:牧色 字体:[增加 减小] 来源:互联网 时间:2017-05-11

牧色通过本文主要向大家介绍了jsp smartupload,smartupload中文乱码,jsp upload,jsp fileupload,ajaxfileupload jsp等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

在用jspsmartupload组件进行文件上传下载的时候,如果用户选择的是含有中文名字的文件名或是文件路径含有中文,则会出现乱码.经过一段时间的调试,本人已经初步解决了这个问题.现将解决的代码贴出来.

一、上传

在SmartUpload.java文件中,增加一个属性private String charset用于进行字符编码转换,相应的有两个方法:

{
    this.charset = charset;
}
public String getCharset()
{
    return this.charset;
}</div>

另外改动二个地方:

在upload()方法中,将String s11 = new String(m_binArray,m_startData,(m_endData - m_startData) + 1);改为

这个时候我们应该在进行处理上传的jsp中进行设置
su.setCharset("UTF-8");</div>
就可以了.

在getDataHeader()方法中,将String s = new String(m_binArray, i, (j - i) + 1);改为

try
{
    s = new String(m_binArray, i, (j - i) + 1,this.getCharset());
}
catch(Exception e)
{
    s = "";
}</div>

在SmartFile.java文件中,增加一个属性private String charset用于进行字符编码转换,相应的有两个方法:

{
    this.charset = charset;
}
public String getCharset()
{
    return this.charset;
}</div>

另外需要改动一个地方
在getContentString()方法中,将String s = new String(m_parent.m_binArray,m_startData,m_size);改为

try
{
    s = new String(m_parent.m_binArray,m_startData,m_size,this.getCharset());
}
catch(Exception e)
{
    s = "";
}</div>

对于SmartFile.java文件中,本人认为可改可不改,不会对上传有什么影响.
经过如此改动源代码后,对于中文乱码问题有很好的解决能力.

二、下载
在SmartUpload.java文件中,将downloadFile(String s, String s1, String s2, int i)方法改为

throws ServletException, IOException, SmartUploadException
{
    if(s == null)
        throw new IllegalArgumentException("File '" + s +
            "' not found (1040).");
    if(s.equals(""))
        throw new IllegalArgumentException("File '" + s +
            "' not found (1040).");
        if(!isVirtual(s) && m_denyPhysicalPath)
            throw new SecurityException("Physical path is
                denied (1035).");
    if(isVirtual(s))
        s = m_application.getRealPath(s);
    java.io.File file = new java.io.File(s);
    FileInputStream fileinputstream = new FileInputStream(file);
    long l = file.length();
    boolean flag = false;
    int k = 0;
    byte abyte0[] = new byte[i];
    if(s1 == null)
        m_response.setContentType("application/x-msdownload");
    else if(s1.length() == 0)
        m_response.setContentType("application/x-msdownload");
    else
        m_response.setContentType(s1);
    m_response.setContentLength((int)l);
    m_contentDisposition = m_contentDisposition != null ? m_contentDisposition : "attachment;";
    if(s2 == null)
        m_response.setHeader("Content-Disposition", m_contentDisposition + " filename=" + toUtf8String(getFileName(s)));
    else
        if(s2.length() == 0)
            m_response.setHeader("Content-Disposition", m_contentDisposition);
        else
            m_response.setHeader("Content-Disposition", m_contentDisposition + " filename=" + toUtf8String(s2));
    while((long)k < l)
    {
        int j = fileinputstream.read(abyte0, 0, i);
        k += j;
        m_response.getOutputStream().write(abyte0, 0, j);
    }
    fileinputstream.close();
}</div> 

另外需要增加一个获得汉字字符的UTF-8编码的方法

* 将文件名中的汉字转为UTF8编码的串,以便下载时能正确显示另存的文件名.
* 雨亦奇2003.08.01
* @param s 原文件名
* @return 重新编码后的文件名
*/
public static String toUtf8String(String s) {
    StringBuffer sb = new StringBuffer();
    for (int i=0;i<s.length();i++) {
        char c = s.charAt(i);
        if (c >= 0 && c <= 255) {
            sb.append(c);
        } else {

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • jsp SmartUpload 中文乱码问题解决
  • jsp SmartUpload 实现上传功能代码

相关文章

  • 2017-05-11用JS实现购物网站商品放大镜效果
  • 2017-05-11jsp实现购物程序
  • 2017-05-11JSP中正则表达式用法实例
  • 2017-05-11jsp读取数据库实现分页技术简析
  • 2017-05-11jsp/javascript打印九九乘法表代码
  • 2017-05-11Java Web开发之MD5加密用法分析
  • 2017-05-11JSP中EL表达式的用法详解(必看篇)
  • 2017-05-11JSP由浅入深(11)—— 标记库
  • 2017-05-11JSP中获取ExtJS.Ajax前台传递的JSON数据实现过程
  • 2017-05-11jsp文件上传与下载实例代码

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • jsp中如何实现按下回车键自动提交表单
    • 用Java实现FTP服务器解决方案
    • jsp form表单方法示例
    • 使用jsp调用javabean实现超简单网页计算器示例
    • Java新手入门的30个基本概念
    • JSP简介
    • Spring 自动代理创建器详细介绍及简单实例
    • 从textarea中获取数据之后按原样显示实现代码
    • java 截取字符串(判断汉字)
    • JSP自定义分页标签TAG全过程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有