gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 15:13:55 26 4
gpt4 key购买 nike

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

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

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

最佳答案

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

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

另请记住,许多 Unicode block 都非常巨大,您无法将一种语言中的所有有效字符放入一个字节中。 (查看 Unicode 6.1 Character Code Charts 即可了解 Unicode 的庞大程度。)因此,老实说,您无法将每个字符压缩为单个字节。

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

关于java - UTF8 字符串到 byte[],每个字符作为单个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11915474/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com