java 中的随机转义序列
Random escape sequences in java
我正在 java 中使用转义字符(反斜杠 \)。当我得到 \n 或 \t 的长度(实际存储的字节数)时,我得到 1,当我得到 \n\t 的长度时,我得到 2,如预期的那样。
当我打印时我的困惑开始了:
length of 3 -> 1
length of 7 -> 1
length of 8 -> 2
length of 0 -> 3
这是怎么回事?如果它与 ASCII 或扩展 ASCII 相关,那么这应该从 164 改变。另一个观察是在前三个字符之后它开始将每个字符计为 1 个长度,例如\123456 的长度为 4.
和编码有关吗?我现在将 UTF-8 设置到我的 IDE 中。
这可能是一个愚蠢的问题,但我不了解 unicode 或其编码的详细知识,有人可以解释一下吗?
当您使用 \ 和一个数字时,您使用的是八进制数 https://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.10.6 , when converting octal 123 to hex It is 53 https://decimaltobinary.pro/Convert_octal_number_123_to_hexadecimal_ , 53 in hex in ASCII is 'S' https://ascii.cl/
因为我们以 8 为基数,所以我们可以使用从 0 到 7 的数字:
123,所有数字都可以按八进制处理。
177,所有数字都可以按八进制处理。
178,1和7在8下可以转换,8在8外,所以把8拆成一个字符。
190, 1可以是8进制的一部分,但是9不行所以9和他后面的所有数字都被视为字符。
123456 我们可以使用八进制的ASCII从0到177(7F),所以123可以转换为一个字符。
我正在 java 中使用转义字符(反斜杠 \)。当我得到 \n 或 \t 的长度(实际存储的字节数)时,我得到 1,当我得到 \n\t 的长度时,我得到 2,如预期的那样。
当我打印时我的困惑开始了:
length of 3 -> 1
length of 7 -> 1
length of 8 -> 2
length of 0 -> 3
这是怎么回事?如果它与 ASCII 或扩展 ASCII 相关,那么这应该从 164 改变。另一个观察是在前三个字符之后它开始将每个字符计为 1 个长度,例如\123456 的长度为 4.
和编码有关吗?我现在将 UTF-8 设置到我的 IDE 中。
这可能是一个愚蠢的问题,但我不了解 unicode 或其编码的详细知识,有人可以解释一下吗?
当您使用 \ 和一个数字时,您使用的是八进制数 https://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.10.6 , when converting octal 123 to hex It is 53 https://decimaltobinary.pro/Convert_octal_number_123_to_hexadecimal_ , 53 in hex in ASCII is 'S' https://ascii.cl/
因为我们以 8 为基数,所以我们可以使用从 0 到 7 的数字:
123,所有数字都可以按八进制处理。
177,所有数字都可以按八进制处理。
178,1和7在8下可以转换,8在8外,所以把8拆成一个字符。
190, 1可以是8进制的一部分,但是9不行所以9和他后面的所有数字都被视为字符。
123456 我们可以使用八进制的ASCII从0到177(7F),所以123可以转换为一个字符。