我在上传文件时遇到问题并在UTF-8下正确保存文件名......我想我已经完成了所有操作,例如在html表单中设置字符集和编码,然后还有request.setCharacterEncoding(“UTF8”) ),我不确定为什么仍然无法正常工作。 我的代码是用HTML和JSP编写的。 能否请你帮忙? 非常感谢
我要再添加一些信息:
这条线是我设法让它发挥作用的那条线,但它并不完全正确,因为当特殊角色出现时,这个词会被切断。
saveFile = new String(saveFile.getBytes(), "UTF8");
文件名应为:tríptico .pdf但结果为 tr
答案 0 :(得分:1)
saveFile是一个字符串吗?你为什么这样重置它? Java字符串已经是unicode,任何UTF8解码都必须在文本变成java字符串之前发生。
答案 1 :(得分:1)
你写的代码永远无法运作。
saveFile.getBytes()
获取file.encoding定义的编码中的字节,然后你对Java说,“假设这个字节数组是UTF-8并将其重新转换为字符串。”
因此,如果file.encoding是UTF-8,则不执行任何操作,如果是其他内容,则会破坏您的字符串。
这里你需要的是file.encoding的正确设置,然后你不需要这些额外的东西。
答案 2 :(得分:0)
除非底层文件系统支持UTF-8,否则不应将文件名保存为UTF-8。您应该接收文件名,将其解码为Unicode,然后将其重新编码为文件系统实际使用的任何字符集。