有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

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


共 (1) 个答案

  1. # 1 楼答案

    看看Character.UnicodeBlock类,它提供了静态方法of(char)of(int)来检测字符的Unicode块。例如,这将告诉您字符是来自阿拉伯语块还是来自基本拉丁语块

    但是,请注意,有几个*拉丁*块,许多语言需要使用几个块中的字符。因此,确定提供给您的语言将是一项非常艰巨的工作。我想不出任何方法可以自动检测到这一点

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

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