2

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

如果不可能,这对于任何编程语言是否普遍适用,或者特别适用于 Java?如果可能的话,我将如何继续读取(解码)文件?

我不想使用 Charset 的 encode() 和 decode() 方法,因为对它们的测试失败了(某些字符集没有正确解码)。由于各种原因我也不想使用第三方程序,所以这个问题的范围纯粹是在标准的java包/代码中。

非常感谢!
NS

4

3 回答 3

8

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

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

于 2012-05-14T13:26:38.323 回答
1

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

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

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

于 2012-05-14T13:29:25.810 回答
0

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

于 2014-06-16T19:47:22.273 回答