UTF8字符串到byte [],每个字符作为单个字节

时间:2012-08-11 14:22:33

标签: java string utf-8

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

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

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

1 个答案:

答案 0 :(得分:1)

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

但是,请注意,有几个* LATIN *块,并且许多语言需要使用多个块中的字符。因此,确定为您提供的语言将是非常艰苦的工作。我认为没办法自动检测到这一点。

另外请记住,许多Unicode块都是巨大的,并且您无法将所有有效字符从单一语言整合到一个字节中。 (看看Unicode 6.1 Character Code Charts以了解Unicode是多么庞大。)老实说,你不可能将每个字符压缩成一个字节。

UTF-8是多年国际化标准的结果,对于任何需要代表多种语言的软件而言,它可能是最佳选择。试图提高效率可能会花费你大量的时间,并且只会带来很小的收益。

相关问题