用Java实现字符编码

用Java实现字符编码,java,unicode,encoding,ascii,Java,Unicode,Encoding,Ascii,在采访一家著名的IT公司时,我被问到了这个问题。他们让我建议,如果我们有很多字符,如何实现字符编码&16位的Unicode是不够的。我回答说我们可以实现字符的64位编码。他们说,这还不够,为此我建议通过javaBigInteger实现编码 然后他们问编码应该是这样的,它只需要所需的位。就像is01000001的ASCII表示法一样,我们不应该使用前导的0,因为我们不需要它,我们在浪费内存。我无法给出答案。如果您能告诉我如何解决这个问题以及如何处理它。请参阅“Unicode标准支持三种字符编码形式

在采访一家著名的IT公司时,我被问到了这个问题。他们让我建议,如果我们有很多字符,如何实现字符编码&16位的Unicode是不够的。我回答说我们可以实现字符的
64位
编码。他们说,这还不够,为此我建议通过java
BigInteger
实现编码

然后他们问编码应该是这样的,它只需要所需的位。就像is
01000001
的ASCII表示法一样,我们不应该使用前导的
0
,因为我们不需要它,我们在浪费内存。我无法给出答案。如果您能告诉我如何解决这个问题以及如何处理它。

请参阅“Unicode标准支持三种字符编码形式:UTF-32、UTF-16和 UTF-8。每个编码形式映射Unicode代码点U+0000..U+D7FF和 U+E000..U+10FFFF到唯一的代码单元序列。指定了代码单元的大小 对于每种编码形式。本节介绍每种编码的形式定义 形式。”


关于保存位的问题,只有当文本非常大时,这才有意义,在这种情况下,我建议使用压缩,例如zip。有多种语言的解决方案可以让您直接读取和写入压缩文件。

您可以研究Unicode编码的多种方式是如何处理压缩文件的。您可能会感兴趣:当Unicode中定义的最高代码点适合21位时,64位编码怎么“不够”呢?两人一组使用16位就足够了。这是一个面试问题,他没有回答。我遇到过几位经验丰富的程序员,他们会发现自己处于类似的位置,所以我认为值得提供我的观点。你确定他们是经验丰富的程序员,而不仅仅是这么说吗。有些人有美化自己的经验和知识的倾向。字符编码不是一件简单的事情,尤其是当您希望编码的语言不是英语时。随着Unicode的广泛使用,它变得越来越简单,但是仍然有很多常用的传统编码。编码确实不是一件简单的事情(我每隔几周就回答一次有关它的问题)。然而,当64位还不够时,他建议使用
biginger
,这意味着他无法理解问题的全部内容。我希望有经验的开发人员对字符编码有一定的了解,即使我们现在到处都在使用UTF-8。