美文网首页
使用SpringMVC上传multipart文件时文件名中文乱码

使用SpringMVC上传multipart文件时文件名中文乱码

作者: 陈丹霞Sophie | 来源:发表于2018-05-10 13:54 被阅读0次

解决中文乱码,需要再接收端和发送端同时保证编码一致,都使用国际标准的utf-8。

常用设置如下:

    1. 接收端设置HttpServletRequest编码如下:

        request.setCharactorEncoding("utf-8")

    2. 发送端设置StringPart的编码如下,使StringPart中文正确解码。

        StringPart:setCharSet("utf-8")

这样设置可以解决常见的乱码问题。今天遇到一个诡异的问题,就是接收端和发送端编码设置一致,但是FilePart的文件名还是出现了中文乱码问题。这是由于FilePart在写入文件部分数据时,强制使用ascii编码导致。解决方法是继承FilePart,并重写sendDispositionHeader方法。代码如下:

public class CustomFilePart extends FilePart

{

    public CustomFilePart(String name, File file) throws FileNotFoundException

    {

         super(name, file, null, "utf-8");

    }

    protected void sendDispositionHeader(OutputStream out)

        throws IOException {

        String filename = getSource().getFileName();   

        out.write(CONTENT_DISPOSITION_BYTES);

        out.write(QUOTE_BYTES);

        out.write(EncodingUtil.getBytes(getName(),"utf-8"));

        out.write(QUOTE_BYTES);

        if (filename != null) {   

            out.write(EncodingUtil.getAsciiBytes(FILE_NAME));   

            out.write(QUOTE_BYTES);   

            out.write(EncodingUtil.getBytes(filename, "utf-8"));   

            out.write(QUOTE_BYTES);   

            }   

    }

}

相关文章

网友评论

      本文标题:使用SpringMVC上传multipart文件时文件名中文乱码

      本文链接:https://www.haomeiwen.com/subject/htvzrftx.html