PostMethod提交带有附件的的form乱码问题解决

主题,直接重点:

=====================================================================

通常会直接如下这样写:

Part[] parts = {
                 new StringPart("name", "HelloWorld,小单"),
                 new FilePart("file", new File("e:\\resume.doc"))
        };
        PostMethod mPost = new PostMethod(url);
        mPost.setRequestEntity(new MultipartRequestEntity(parts, mPost.getParams()));
        int status = httpClient.executeMethod(mPost);

不出意外的话,会出乱码 ^_^

做如下修改,在new StringPart方法中增加参数,charset

 Part[] parts = {
                 new StringPart("name", "HelloWorld,小单",
"UTF-8"),
                 new FilePart("file", new File("e:\\resume.doc"))
        };

原因:

查看StringPart源码,如下:

    /** Default charset of string parameters*/
    public static final String DEFAULT_CHARSET = "US-ASCII";

    public StringPart(String name, String value, String charset) {
        
        super(
            name,
            DEFAULT_CONTENT_TYPE,
            charset == null ? DEFAULT_CHARSET : charset,
            DEFAULT_TRANSFER_ENCODING
        );
        if (value == null) {
            throw new IllegalArgumentException("Value may not be null");
        }
        if (value.indexOf(0) != -1) {
            // See RFC 2048, 2.8. "8bit Data"
            throw new IllegalArgumentException("NULs may not be present in string parts");
        }
        this.value = value;
    }

如不指定charset,则会使用默认编码“US-ASCII”。

PS:我用的jar包为 commons-httpclient-3.1.jar

时间: 2024-07-28 15:32:54

PostMethod提交带有附件的的form乱码问题解决的相关文章

java-ajax提交带有file标签的form表单

问题描述 ajax提交带有file标签的form表单 struts2中中有一个的标签,直接提交可以把文件名.等参数提交到后台.现在的问题的是有一个树形的文件列表界面,根节点是文件夹,子节点是文件,选中文件夹那一行然后点击右键会有个上传文件的菜单项,那么怎么将选中的那一行的属性和标签的文件名等属性一起提交到后台.有点啰嗦,不知道描述清楚了没有,求指点,感激不尽. 解决方案 将节点的信息放到表单hidden控件中,给表单指定target提交到隐藏iframe来实现文件上传,或者用jquery.for

服务器-提交带有html标签的数据出现链接已重置

问题描述 提交带有html标签的数据出现链接已重置 问题是这样子的 <form action="" method="post"> <input type="text" name="title"> </form> 当输入 <p>你好</p> 就会出现链接已重置,本地是好的,就是服务器出现了问题,百思不得其解啊! 解决方案 提交后连接重置是什么意思,报错了吧 楼主使用的是

利用php中mail函数发送带有附件的邮件

mail函数,发送邮件 语法: mail(to,subject,message,headers,parameters) to 规定邮件的接收者 subject 规定邮件的主题.该参数不能包含任何换行字符 message 规定要发送的消息 headers 规定额外的报头,比如 From, Cc 以及 Bcc parameters 规定 sendmail 程序的额外参数. 碰到的主要问题是乱码问题,刚开始是某些客户端接收邮件时好(比如QQ邮箱,估计带自动那个识别编码)的有些不foxmail.ipad

ajax提交到servelt获取参数有乱码的解决方法

 这篇文章主要介绍了ajax提交到servelt获取参数有乱码的解决方法,需要的朋友可以参考下 在这里,假设读者了解基本的    ajax    技术或更多.我仅仅阐述一个现象,一个解决方法:原因.    原理,同样不清楚    --    我们先从简单的着手,    servlet传值到JSP页面js    脚本中,利用脚本将相关值显示在页面.解决这个方向(servlet--javascript)的中文乱码问题很简单.只需要在    servlet中,添加一个    编码设置:   代码如下:

ajax-如何用Ajax提交multipart/form-data类型的Form?

问题描述 如何用Ajax提交multipart/form-data类型的Form? 如何用Ajax提交multipart/form-data类型的Form? 解决方案 ajax中data参数传值的时候,用下边这种方式,传序列化的表单值就好了. data:$('#regForm').serialize()//.serialize()方法将form表单内所有数据组装 解决方案二: 在form里提交文件的时候一定要写 enctype=""multipart/form-data"&q

PHP附件下载中文名称乱码的解决方法_php技巧

本文实例讲述了PHP附件下载中文名称乱码的解决方法.分享给大家供大家参考,具体如下: PHP中,如果要下载的文件名称为中文,则会出现文件标题乱码. 此时就需要对标题进行编码,也就是说先进性urlencode,然后再放入header,然后问题就解决了. $filename = urlencode("下载文档"); header ( "Content-disposition: attachment; filename=$filename.xls" ); 网上说,在RFC

如何使用 Cdosys.dll 库使用 Visual C# 中发送电子邮件带有附件接收邮件

 如何使用 Cdosys.dll 库一封新邮件中嵌入一条消息,使用 Visual C# 本文描述如何在新邮件中嵌入邮件的 Windows 2000 库 (Cdosys.dll) 中使用 Microsoft 协作数据对象 (CDO). 可以使用 Microsoft Visual C# 执行此操作. 请注意 Cdosys.dll 库也称为是 CDOSYS. 若要用于新邮件中嵌入邮件 CDOSYS 请按照下列步骤操作:    1. 启动 Microsoft Visual Studio.NET 或 Mi

防止用户提交带有恶意的脚本

//编码HTML  和  解码Html. //在评论的时候为了防止用户提交带有恶意的脚本,可以先过滤HTML标签,过滤掉双引号,单引号,符号&,符号<,符号 用法: <input type="text" name="rain" id="rain" /> <input type="button" value="test" onclick=" document.getE

不同编码的页面表单数据乱码问题解决方法

 这篇文章主要介绍了不同编码的页面表单数据乱码问题解决方法,本文使用一个表单不常用属性accept-charset解决了这个问题,需要的朋友可以参考下     今天遇到一个很神奇的问题,用户告诉我这边网站上的表单提交到查询系统之后得不到返回值,查询结果是0条记录,但是再本地纯html执行的结果却能搜索到值.自己验证了下,果然如此,而且比对两边GET提交的参数,除了有个字段的值不同外,参数个数这些都是相同的,故考虑有可能是编码问题造成的影响. 分别打开两个文件后查看,发现两边编码确实不一致,而服务