[英]Android & Java: String.getBytes() not parsing escaped characters properly
我有一个 Java 字符串"Hi\\n"
,我想将其转换为byte[]
,但是当我有一个内容为"Hi\\n"
variable.getBytes(StandardCharsets.UTF_8)
并且我调用variable.getBytes(StandardCharsets.UTF_8)
\\
和n
被单独解析而不是作为换行符一起解析,所以我最终在数组中得到 4 个字节,而不是预期的 3 个字节。
如何正确执行此转换?
编辑:添加了截图。 我在从中调用getBytes()
位置设置了一个断点,并在payload
为"hi\\n"
时评估表达式,并且评估返回了一个 4 字节的byte[]
。 当我直接执行"hi\\n".getBytes(StandardCharsets.UTF_8)
时,我得到了 3 个字节,这让我很困惑。
我的菜鸟错误。 问题是因为"Hi\\n"
示例是来自 Android EditText
的用户输入String
而不是真正的String
文字,所以反斜杠\\
已经转义为\\\\
,因此该String
的实际内容是["H", "i", "\\\\", "n"]
。 我添加了一些代码来进行输入清理:
// Assume payload is content of an EditText which the user has entered "Hi\n" in
payloadInBytes = payload.replace("\\n", "\n").getBytes(StandardCharsets.UTF_8);
此后的payloadInBytes
是预期的3 个字节。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.