0

我想将用户的输入作为 UTF8 字符串 & 然后检测字符串的语言 & 将字符串存储为压缩的 byte[]。如果所有字符都不是同一种语言,那么它不是一个有效的输入。从用户获得有效输入后,我想将此输入字符串存储为字节数组。

如果用户输入的字符串包含非英文字符,那么每个字符将占用超过 1 个字节,所以我想存储字符串的语言,然后将每个字符存储在一个字节中(我想现在可以存储字符通过仅存储与该语言的起始代码点的差异而以单字节存储,因为所有字符都来自相同的语言,并且可能(!?)因此适合单字节容量,因为范围小!?)。这就是我压缩每个字符以适应单字节的方式

这是一个正确的方法吗?如果是,我如何检测字符串中字符的语言?

4

1 回答 1

1

看一下Character.UnicodeBlock类,它提供了静态方法of(char)of(int)检测字符的 Unicode 块。例如,这将告诉您一个字符是来自 ARABIC 块还是来自 BASIC_LATIN 块。

但是,请注意有几个 *LATIN* 块,并且许多语言需要使用来自多个块的字符。因此,弄清楚为您提供的语言将是一项非常艰巨的工作。我想不出办法自动检测到这一点。

还要记住,许多 Unicode 块是巨大的,你不可能将一种语言中的所有有效字符都放入一个字节中。(查看Unicode 6.1 字符代码表以了解 Unicode 有多么庞大。)所以,老实说,您无法将每个字符压缩成一个字节。

UTF-8 是多年国际化标准的结果,它可能是任何需要表示多种语言的软件的最佳选择。尝试生产更高效的东西可能会花费你大量的时间,并且只会带来很小的收益。

于 2012-08-11T15:36:00.547 回答