【发布时间】: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