繁体   English   中英

Android 和 Java:String.getBytes() 没有正确解析转义字符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM