美文网首页
使用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