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