我是靠谱客的博主 活力皮皮虾,这篇文章主要介绍关于httpclient上传文件是中文名称的处理,现在分享给大家,希望可以做个参考。

在一个项目中,上传文件采用httpclient来post文件,在测试中发现 如果文件是中文名称,上传的文件是乱码
经过跟踪发现,原来在httpclient中进行了编码,为ASCII,所以为乱码
org/apache/commons/httpclient/util包下EncodingUtil.java

  /**
     * Converts the specified string to byte array of ASCII characters.
     *
     * @param data the string to be encoded
     * @return The string as a byte array.
     *
     * @since 3.0
     */
    public static byte[] getAsciiBytes(final String data) {

        if (data == null) {
            throw new IllegalArgumentException("Parameter may not be null");
        }

        try {
            return data.getBytes("US-ASCII");
        } catch (UnsupportedEncodingException e) {
            throw new HttpClientError("HttpClient requires ASCII support");
        }
    }

解决方法:
1 在接收端处理ascii数据
2 重新编译httpclient包,即更改上面的方法 ,改为iso8859-1或utf-8
这样可以解决中文的问题

采用httpclient是一个很好的方法,可以给你其他的系统post数据,好像delphi中的indy控件,


最后

以上就是活力皮皮虾最近收集整理的关于关于httpclient上传文件是中文名称的处理的全部内容,更多相关关于httpclient上传文件是中文名称内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部