我正在上传文件到服务器。文件上传 HTML 表单有 2 个字段:
- 文件名 - 一个 HTML 文本框,用户可以使用任何语言来命名。
- 文件上传 - 一个 HTML 'file',用户可以从磁盘中指定要上传的文件。
当提交表单时,文件内容能够被正确接收。但是,当读取文件名(上面的第1点)时,它是乱码。ASCII 字符能正常显示,但是当名称用其他语言(德语、法语等)输入时,就会出现问题。
在 servlet 方法中,请求的字符编码被设置为 UTF-8。我甚至尝试了如下所述的过滤器 - 如何使这个代码提交一个带有 jQuery/Ajax 的 UTF-8 表单文本区域工作? - 但似乎没有起作用。只有文件名看起来是乱码的。
MySQL 表格支持 UTF-8 编码,文件名存储和显示都没有问题。我随机输入了一些非英文字符,它们都被正确地存储/显示。
通过 Fiddler,我监视了请求,所有的 POST 数据都正确传递。我正在尝试确定数据在哪里/如何变为乱码。感谢任何帮助。
@MultipartConfig
解决方案对我有用(除此之外,我还需要使用new String(....getBytes(...), ...)
)。到目前为止,在这里列出的其他解决方案不幸地不能单独为我工作 :/ - Vin