簡體   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