Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java war文件是否有标准字符编码?_Java_Utf 8_Character Encoding_War - Fatal编程技术网

Java war文件是否有标准字符编码?

Java war文件是否有标准字符编码?,java,utf-8,character-encoding,war,Java,Utf 8,Character Encoding,War,如果我在使用拉丁编码代码页ISO/IEC 8859-1的操作系统上创建文本文件。现在,如果我使用JavaJAR工具将文本文件打包为.war文件,它会使用与源操作系统相同的字符编码进行打包吗?或者,它将使用一些标准编码(如UTF-8)进行打包吗?WAR文件基本上是一个ZIP存档,扩展名为.WAR,与编码无关。JAR/WAR/EAR的字符集编码是UTF-8。但是请注意,这只适用于条目名称,而不适用于文件内容,例如类文件数据。似乎jar从文本文件中获取字节,并将这些字节准确地存储在jar/war文件中

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

WAR文件基本上是一个ZIP存档,扩展名为.WAR,与编码无关。

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

似乎jar从文本文件中获取字节,并将这些字节准确地存储在jar/war文件中,而不存储任何编码信息。这是从对这个问题的评论以及其他答案中收集到的。答案并没有明确说明这一点,所以我在回答我自己的问题。如果我错了,请更正。

打包(创建zip存档)不会更改任何文件的编码。一个.war/.jar文件的接收者如何知道包含的文本文件的内容?源代码是否存储在某个地方?如果没有,如果原始编码没有更改为标准编码,则似乎没有任何方法可以知道包含的文本文件的内容。接收者通常无法知道。但是,包含的任何文本文件实际上只应由jar文件中的Java软件读取,因此这不是一个真正的问题。唯一的例外是记录.jar文件内容的xml文件。这些文件包含一个xml头,它记录了它们的编码。“所以这不是一个真正的问题”--这是否意味着将使用源操作系统编码?不。但是文本文件只能由以下任一方读取:jar中包含的java软件,或者由jar文件中的配置文件配置的servlet容器。这就是全部要点:读取文本文件的软件是由制作整个jar文件的同一个用户制作/配置的。因此,如果我愿意,我可以将jar文件中的所有文本文件编码为utf-7。然后我只需要配置软件/Web服务器来读取utf-7文件,我很困惑。更大的问题是,人们如何知道.war/.jar/.zip文件中包含的文本文件的内容?在不知道编码的情况下,你无法分辨内容是什么。源代码是否存储在.war文件中?它与内容无关,而是与文件的使用方式有关。WAR扩展是Web服务器的标志,表示这是WebARchive,也不是JavaARchive或EnterprizeARchive。据我所知,ZIP archiver不应该为文本文件存储文件编码。我知道WAR扩展是针对Web服务器的。web服务器如何知道包含的文本文件的内容?web服务器不需要知道文件的内容。如何处理文件取决于应用程序。