Questão de codificação de nome de arquivo enviado para japonês e chinês
Atualmente estou usando ojQuery-File-Upload. Eu posso fazer upload de alguns arquivos com um nome de arquivo japonês ou chinês, e posso ver que o nome do arquivo é, por exemplo, "す 疲 れ 様 で す .txt" ou "测试 文档 .txt" no modo de depuração do navegador, mas no backend (Java) , eles se tornam "ã çç-²ãŒŒ§§˜ã §ã ™ .txt" e "æµ £ £.. t txt".
Uma vez tentei definirformAcceptCharset paraUTF-8 mas não funciona.
Questão:
Como obter o nome do arquivo correto no lado do Java ao analisar o MultipartFormData?
Desde já, obrigado.
BTW, O seguinte é meus dados
-----------------------------25382434931419
Content-Disposition: form-data; name="file"; filename="�疲れ様��.txt"
Content-Type: text/plain
....
Adicione os códigos Java
Na verdade eu não fiz nada no lado de Java atualmente,
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public String upload(InMultiPart inMP) {
while (inMP.hasNext()) {
InPart part = inMP.next();
MultivaluedMap<String, String> headers = part.getHeaders();
String fileName = null;
if (!headers.containsKey("Content-Disposition")) {
continue;
} else {
// get the file name here
fileName = parseFileName(headers.getFirst("Content-Disposition"));
}
//.....
}
//......
}
private String parseFileName(String disposition) {
int fileNameIndex = disposition.indexOf("filename=");
if (fileNameIndex < 0) {
return null;
}
int start = disposition.indexOf("\"", fileNameIndex) + 1;
int end = disposition.indexOf("\"", start);
return disposition.substring(start, end);
}