繁体   English   中英

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

[英]Can a file be encoded in multiple charsets in Java?

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

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

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

非常感谢!
NS

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM