Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.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 返回“返回”;“扩展”;弦长_Java_String_Unicode_Unicode String_String Length - Fatal编程技术网

Java 返回“返回”;“扩展”;弦长

Java 返回“返回”;“扩展”;弦长,java,string,unicode,unicode-string,string-length,Java,String,Unicode,Unicode String,String Length,对于通过按住Alt键并在numpad中键入160生成的Unicode字符,例如ASCII代码160的无中断空格,它将生成两个字符的长度 例如,我有一个88个字符的字段(例如Android日志中的标记字段)。如果我有87个普通字符(ASCII

对于通过按住Alt键并在numpad中键入160生成的Unicode字符,例如ASCII代码160的无中断空格,它将生成两个字符的长度

例如,我有一个88个字符的字段(例如Android日志中的标记字段)。如果我有87个普通字符(ASCII<127)和一个无中断空格,在
String.length()
中,我仍然会得到88个字符。但实际上它需要89个字符的长度。它超过了字段大小

Java(或Android)中是否有一个函数可以简单地返回字符串的“扩展”长度


仅供参考:

您的Java字符心智模型很混乱。该字符串有88个字符,当作为UTF-8序列写入时需要89个字节。显然,您需要使用哪个版本取决于您想用它做什么。如果您要使用网络链接发送数据,则需要使用八位字节(字节).

您的Java字符心智模型很混乱。该字符串有88个字符,当以UTF-8序列写出时需要89个字节。显然,您需要使用哪个版本取决于您想用它做什么。如果您要使用网络链接发送数据,则需要使用八位字节(字节).

你的意思是像
String#getBytes(“UTF-8”)这样的东西吗.length
?没有ASCII代码160。ASCII范围是00-127。@dda-如果您从文档中读取,可能会发生这种情况。也不会提取中断字符-ASCII 160。请阅读此内容-ASCII没有超过127…0xA0的任何内容,因为不可中断的空格是CP 1252代码页Hmmm…正如我从wiki/utf-8中读取的,实际上160是u用2个字节来表示。因此,不知何故,160无中断空格就像是将2个普通字符粘在一起。如果严格地逐字节读取,这2个字节根本没有意义。但是,如果程序设置为UTF-8模式,当它遇到时,它将作为一个整体读取160。(我想这只是ASCII的命名问题。)你的意思是像
String#getBytes(“UTF-8”)这样的东西吗.length
?没有ASCII代码160。ASCII范围是00-127。@dda-如果您从文档中读取,可能会发生这种情况。也不会提取中断字符-ASCII 160。请阅读此内容-ASCII没有超过127…0xA0的任何内容,因为不可中断的空格是CP 1252代码页Hmmm…正如我从wiki/utf-8中读取的,实际上160是u用2个字节来表示。因此,不知何故,160无中断空格就像是将2个普通字符粘在一起。如果严格地逐字节读取,这2个字节根本没有意义。但是,如果程序设置为UTF-8模式,当它遇到时,它将作为一个整体读取160。(我想这只是ASCII的命名问题。)我对此也有点困惑,直到我读到齐姆·扎姆·奥普特图特的评论(好名字,顺便说一句)我也有点困惑,直到我读到齐姆·扎姆·奥普特图特的评论(好名字,顺便说一句)