Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.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中,一个文件可以用多个字符集编码吗?_Java_Character Encoding_Java Io - Fatal编程技术网

在Java中,一个文件可以用多个字符集编码吗?

在Java中,一个文件可以用多个字符集编码吗?,java,character-encoding,java-io,Java,Character Encoding,Java Io,我正在开发一个Java插件,它允许人们通过指定他们希望使用的字符集编码来写入和读取文件。然而,我对如何在一个文件中编码多个编码感到困惑。例如,假设A个字符来自一个字符集,B个字符来自另一个字符集,是否可以将“aaaabbbbaaaaaa”写入文件 如果这是不可能的,那么对于任何编程语言,或者特别是对于Java,这通常是正确的吗?如果可能的话,我将如何继续读取(解码)文件 我不想使用字符集的encode()和decode()方法,因为测试失败(一些字符集没有正确解码)。出于各种原因,我也不想使用第

我正在开发一个Java插件,它允许人们通过指定他们希望使用的字符集编码来写入和读取文件。然而,我对如何在一个文件中编码多个编码感到困惑。例如,假设A个字符来自一个字符集,B个字符来自另一个字符集,是否可以将“aaaabbbbaaaaaa”写入文件

如果这是不可能的,那么对于任何编程语言,或者特别是对于Java,这通常是正确的吗?如果可能的话,我将如何继续读取(解码)文件

我不想使用字符集的encode()和decode()方法,因为测试失败(一些字符集没有正确解码)。出于各种原因,我也不想使用第三方程序,因此这个问题的范围完全在标准java包/代码中

非常感谢

注意

您需要将其作为字节流读取,并事先知道字符开始和结束的字节位置,或者使用一些特殊的分隔符/byterange来指示字符组的开始和结束。通过这种方式,您可以获得特定字符组的字节,并最终使用所需的字符编码对其进行解码


这个问题不是Java特有的。这个要求很奇怪。我想知道这样混合字符编码有什么意义。只要始终使用一种统一的编码,例如UTF-8,它支持人类所知道的几乎所有字符。

当然,原则上可以将不同字符集编码的文本写入一个文件中,但为什么要这样做呢

字符编码只是从文本字符到字节的映射,反之亦然。文件由字节组成。写入文件时,字符编码决定如何将字符转换为字节,读取时,它决定如何将字节转换回字符


您可以将文件的一部分用一个字符编码,另一部分用另一个字符编码。您必须有一些机制来跟踪哪些部分是用什么编码的,因为文件不会自动为您跟踪这些部分。

我也在想这个问题,因为我的客户刚刚问了一个类似的问题。正如BalusC提到的,这不是java特有的问题。 经过几次反复,我发现真正的问题可能是“信息的多重编码”,而不是多重编码文件。
i、 我们有一个xml字符串文本需要用8859-1编码,如果我们将其保存为文件,那么我们需要对其进行编码。xml的默认编码是UTF-8,我们可能不需要将整个xml编码为8859-1。因为xml节点只是将信息传递给其他系统和内容的载体(xml节点的值,需要使用8859-1进行持久化)。那么在这种情况下我们需要多重编码吗?可能不会。我们仍然可以使用UTF-8对xml进行编码,然后将其传递。一旦客户端接收到xml,他们需要从UTF-8编码文件中读取信息,并将xml节点的值持久化为8859-1。

您可以将不同编码产生的字节写入同一文件,但是,如果不知道字符编码之间的界限在哪里,就不一定能够解码文件。当读取应解码为B的字节时,您需要知道结果字符是否为B。鸡和蛋的问题。谢谢您的回答!我会尽快接受(约7分钟)。至于整件事的“为什么”呢?好的,这是客户的想法-\如果输入数据的编码是事先知道的,并且不是UTF-8,那么在写入文件时,您总是可以将其转换为UTF-8。@BALUC UTF-8在从csv文件读取日文文本时不支持。虽然“SJIS”支持。我想使用CSVReader从csv文件使用多语言。从csv文件读取多语言数据的最佳代码是什么?@NyeinMonSoe:您应该使用与最初保存的csv文件相同的编码读取csv文件。如果CSV文件是用SJIS而不是UTF-8保存的,则需要用SJIS读取。如果要使用UTF-8读取CSV,则需要使用UTF-8保存CSV。就这么简单。也许你有一个WARC文件,其中包含来自网络爬网的多个条目。每个条目可能有原始网站的编码。欢迎使用StackOverflow!在我看来,这更像是一个评论,而不是一个答案。请你把它改写一下,使它读起来更像一个答案。或者,如果你真的想把它作为一个评论,那么请你自己删除它。要评论或要求作者澄清,请在他们的帖子下方留下评论——你可以随时对自己的帖子发表评论,一旦你有足够的评论,你就可以发表评论了。