From c2071d8d81af1d5277519e3ffe6d106ceecde0e2 Mon Sep 17 00:00:00 2001 From: Markus Fisch Date: Wed, 8 May 2024 19:49:19 +0200 Subject: [PATCH] Treat LF/CR/Tab as printable characters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When encoding "something\nlike\tthüs". This string should be encoded as text rather than binary, of course. --- .../android/binaryeye/fragment/EncodeFragment.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/kotlin/de/markusfisch/android/binaryeye/fragment/EncodeFragment.kt b/app/src/main/kotlin/de/markusfisch/android/binaryeye/fragment/EncodeFragment.kt index d19a070d..fba2d3d7 100644 --- a/app/src/main/kotlin/de/markusfisch/android/binaryeye/fragment/EncodeFragment.kt +++ b/app/src/main/kotlin/de/markusfisch/android/binaryeye/fragment/EncodeFragment.kt @@ -288,9 +288,11 @@ class EncodeFragment : Fragment() { toast(e.message ?: "Invalid escape sequence") return null } - // Convert to a ByteArray if there were escape sequences - // for non-printable characters. - if (text.any { it.code < 32 }) { + // Return a ByteArray if there were escape sequences for + // non-printable characters (like `\0`). This means the content + // will be encoded in binary mode, what would be wrong for + // "something\nlike\tthüs". + if (text.any { it.code < 32 && it.code !in setOf(9, 10, 13) }) { return text.toByteArray() } }