RestEasy - 上传带有西里尔字母名称的文件(多部分/表单数据)

Nik*_*kov 1 multipartform-data resteasy cyrillic

当我将文件上传到服务器时,一切都很好。但是,如果文件名包含西里尔字符,则在服务器上该文件名会显示问号。

当我向服务器发送请求时,我没有设置任何字符编码。

我知道,如果您在发出请求时没有在标头中添加任何字符编码,则 RestEasy 放置的默认字符编码是 us-ascii。我尝试了几种方法来改变它:

  • 使用 new String(filename.getBytes("US-ASCII"), "UTF-8") - 不起作用;
  • 我编写了ContainerRequestFilter,其中我更改了此请求的ContentType,并在ContentType中添加了charset=UTF-8。设置正确但还是不行。

能否请你帮忙!我将非常感激!

谢谢!

也发布在 jboss.org论坛上

lef*_*loh 5

不要更改 Content-Type,但使用 aContainerRequestFilter覆盖默认的字符集属性:

@Provider
public class CharsetFilter implements ContainerRequestFilter {

    @Override
    public void filter(ContainerRequestContext requestContext) throws IOException {
         requestContext.setProperty(InputPart.DEFAULT_CHARSET_PROPERTY, "UTF-8");
    }

}
Run Code Online (Sandbox Code Playgroud)

也许您应该检查是否提供了编码,如果没有则覆盖。