是否可以为FileBody设置charset UTF8?

时间:2016-10-21 13:21:05

标签: java utf-8

我处理一个请求然后发送到另一个端点。除文件名编码外,所有工作都很好(如果它们不典型,则会出现损坏的字符)。

我已经想出如何为字符串项设置UTF-8,但是我不知道如何为FileBody类设置它。

如何为我发送的文件设置UTF-8?谢谢!

我附上了我的Java代码示例

Map parameters = req.getParameterMap();

UploadedFile uploadedFile = (UploadedFile) parameters.get("file");

File serverFile = new File(uploadedFile.getServerFileName());
File clientFile = new File(serverFile.getParent() + java.io.File.separator + uploadedFile.getClientFileName());
serverFile.renameTo(clientFile);

MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addPart("file", new FileBody(clientFile));
builder.addTextBody("field1", "Načrt", ContentType.create("text/plain", Charset.forName("UTF-8")));

2 个答案:

答案 0 :(得分:0)

如果没有其他功能,您可以在main开头使用此代码段更改程序处理的所有文件的整个编码:

System.setProperty("file.encoding", "UTF-8");
Field charset = Charset.class.getDeclaredField("defaultCharset");
charset.setAccessible(true);
charset.set(null, null);

我不得不将它用于一个必须在Linux和Windows中读/写文件的应用程序,它使用了一些阴暗的库来与文件进行交互。

答案 1 :(得分:0)

感谢所有人。

我为我找到了一个解决方案。看到它。

Map parameters = req.getParameterMap();

UploadedFile uploadedFile = (UploadedFile) parameters.get("file");

File serverFile = new File(uploadedFile.getServerFileName());
File clientFile = new File(serverFile.getParent() + java.io.File.separator + uploadedFile.getClientFileName());
serverFile.renameTo(clientFile);

MultipartEntityBuilder builder = MultipartEntityBuilder.create();

// fix <==========================
builder.setCharset(Charset.forName("UTF-8")).setMode(HttpMultipartMode.BROWSER_COMPATIBLE);

builder.addPart("file", new FileBody(clientFile));
builder.addTextBody("field1", "Načrt", ContentType.create("text/plain", Charset.forName("UTF-8")));