在utf-8中将文件名写入目录

时间:2011-12-12 20:35:35

标签: java jsp utf-8 filenames

我在上传文件时遇到问题并在UTF-8下正确保存文件名......我想我已经完成了所有操作,例如在html表单中设置字符集和编码,然后还有request.setCharacterEncoding(“UTF8”) ),我不确定为什么仍然无法正常工作。 我的代码是用HTML和JSP编写的。 能否请你帮忙? 非常感谢

我要再添加一些信息:

这条线是我设法让它发挥作用的那条线,但它并不完全正确,因为当特殊角色出现时,这个词会被切断。

saveFile = new String(saveFile.getBytes(), "UTF8");

文件名应为:tríptico .pdf但结果为 tr

3 个答案:

答案 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,然后将其重新编码为文件系统实际使用的任何字符集。