Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java UTF8字符串到字节[],每个字符为单字节_Java_String_Utf 8 - Fatal编程技术网

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

Java UTF8字符串到字节[],每个字符为单字节,java,string,utf-8,Java,String,Utf 8,我想将用户的输入作为UTF8字符串,然后检测字符串的语言,并将字符串存储为压缩字节[]。如果所有字符不是同一语言,则它不是有效的输入。从用户处获得有效输入后,我希望将此输入字符串存储为字节数组 如果用户使用非英语字符输入字符串,那么每个字符将占用1个字节以上,因此我希望存储字符串的语言&然后将每个字符存储在单个字节中(我想现在可以通过存储与该语言的起始代码点的差异来存储单个字节中的字符&因为所有字符都来自同一种语言&可能(!?)因此适合单字节容量,因为范围很小!?)。这就是我如何压缩每个字符以适

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

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

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

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

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

还请记住,许多Unicode块都是巨大的,您不可能将单一语言中的所有有效字符都压缩到一个字节中。(请看一下以了解Unicode有多大。)因此,老实说,您无法将每个字符压缩到一个字节中


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

我们无法检测/确定字节arr的字符编码是的。我们必须知道或者猜测。在我看来,好像你混合了语言和字符编码。我有点困惑。(字符没有语言)例如这些字符(
どうしようま)来自日语。我将根据UTF8编码存储该语言的起始代码点,然后通过存储每个字符的起始代码点的差异来压缩字节[],而不是存储不适合单个字节的整个代码点。我正在将UTF8字符串转换为字节[]。我猜通过查看UTF8字符串的每个字符,我可以通过该字符的代码点范围了解所使用的语言。(我不需要确定字节[]的字符编码,因为我知道它是从UTF8字符串转换而来的。要从字节[]获取字符串我将首先使用压缩时使用的字符串语言解压缩字符串,然后从未压缩的字节[]恢复UTF8字符串。+1。我想强调,OP认为特定语言的字符适合一个字节的假设是不正确的。