我处理一个请求然后发送到另一个端点。除文件名编码外,所有工作都很好(如果它们不典型,则会出现损坏的字符)。
我已经想出如何为字符串项设置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")));
答案 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")));