【问题标题】:Writing filename to directory in utf-8将文件名写入 utf-8 中的目录
【发布时间】:2011-12-12 20:35:34
【问题描述】:

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

我将添加更多信息:

这一行是我设法使它工作的那一行,但它并不完全正确,因为当特殊字符出现时单词会被截断。

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

文件名应该是:trípico.pdf,但结果是tr

【问题讨论】:

    标签: java jsp utf-8 filenames


    【解决方案1】:

    saveFile 是字符串吗?你为什么要这样重置它? Java 字符串已经是 unicode,任何 UTF8 解码都必须在文本变为 Java 字符串之前进行。

    【讨论】:

      【解决方案2】:

      你写的代码永远不会工作。

      saveFile.getBytes() 以 file.encoding 定义的编码为您获取字节,然后您对 Java 说,“假设此字节数组是 UTF-8 并将其重新转换为字符串。”

      所以,如果 file.encoding 是 UTF-8,这什么都不做,如果是别的,它会破坏你的字符串。

      你需要的是正确的file.encoding设置,然后你就不需要这些额外的东西了。

      【讨论】:

        【解决方案3】:

        除非底层文件系统支持 UTF-8,否则不应将文件名按原样保存为 UTF-8。您应该接收文件名,将其解码为 Unicode,然后将其重新编码为文件系统实际使用的任何字符集。

        【讨论】:

        • 感谢 Remy 的回复,但您能详细说明一下吗?
        • 除了用于整个 JVM 的 -Dfile.encoding 之外,没有用于编写非 Unicode 路径名的 Java API。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-30
        • 2011-05-06
        • 2013-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多