【问题标题】:is there a standard character encoding for war files?战争文件有标准的字符编码吗?
【发布时间】:2012-04-11 05:34:05
【问题描述】:

如果我在使用拉丁编码代码页 ISO/IEC 8859-1 的操作系统上创建文本文件。现在,如果我使用 Java jar 工具将文本文件打包为 .war 文件,是否会使用与源操作系统上相同的字符编码进行打包?或者,是否会使用一些标准编码(例如 UTF-8)进行打包?

【问题讨论】:

  • 打包(创建 zip 存档)不会更改任何文件的编码。
  • .war/.jar 文件的接收者如何知道包含的文本文件的内容?源编码是否存储在某处?如果没有,如果原始编码未更改为标准编码,则似乎没有任何方法可以知道包含的文本文件的内容。
  • 接收者一般不知道。但是包含的任何文本文件实际上应该只能由 jar 文件中的 Java 软件读取,所以这不是一个真正的问题。唯一的例外是记录 .jar 文件内容的 xml 文件。这些包含一个 xml 标头,其中记录了它们的编码。
  • “所以这不是一个真正的问题”——这是否意味着将使用源操作系统编码?
  • 没有。但文本文件只能由以下任一者读取:jar 中包含的 java 软件,或由 jar 文件中的配置文件配置的 servlet 容器。这就是重点:读取文本文件的软件是由制作整个 jar 文件的同一用户制作/配置的。因此,如果我愿意,我可以将 jar 文件中的所有文本文件编码为 utf-7。然后我只需要配置软件/网络服务器来读取 utf-7 文件。

标签: java utf-8 character-encoding war


【解决方案1】:

JAR/WAR/EAR 的字符集编码是 UTF-8。但是请注意,这仅适用于 条目名称,而不适用于文件内容,例如类文件数据。

【讨论】:

    【解决方案2】:

    WAR 文件基本上是一个带有 .war 扩展名的 ZIP 存档,它与编码无关。

    【讨论】:

    • 我很困惑。更大的问题是有人如何知道 .war/.jar/.zip 文件中包含的文本文件的内容是什么?在不知道编码的情况下,您无法分辨内容是什么。源编码是否存储在 .war 文件中?
    • 这不是关于内容,而是关于如何使用文件。 WAR 扩展是 Web 服务器的标志,表明这是一个 WebARchive,也不是 JavaARchive 或 EnterprizeARchive。
    • 据我所知,ZIP 归档器不应该为文本文件存储文件编码。
    • 我知道 war 扩展是用于 web 服务器的。 Web 服务器如何知道包含的文本文件的内容是什么?
    • Web 服务器不需要知道文件的内容是什么。如何处理文件取决于应用程序。
    【解决方案3】:

    似乎 jar 从文本文件中获取字节并将这些字节准确存储在 jar/war 文件中,而不存储任何编码信息。这是从 cmets 关于该问题以及其他答案的收集而来的。答案没有清楚地说明这一点,所以我正在回答我自己的问题。如有错误请指正。

    【讨论】:

      猜你喜欢
      • 2015-02-18
      • 1970-01-01
      • 2018-11-03
      • 2010-10-15
      • 1970-01-01
      • 2017-09-18
      • 1970-01-01
      • 2017-07-30
      • 2019-09-26
      相关资源
      最近更新 更多