Мне нужно сохранить разрывы строк ввода текста, вставленного на мою страницу интерфейса javascript, после вставки во ввод Textarea
вот что произойдет, если я отлаживаю значение, содержащееся в методе onSumbit() текстовой области
Мне нужно иметь CRLF, но изображение ясно показывает, что CarriageReturn (CR) был удален из вставленного текста, и все еще присутствует только LineFeed (LF).
Я попытался добавить свойство css white-space: pre-wrap в текстовое поле, но это не сработало.
Как я могу сохранить CRLF текста?
Спасибо
Где вы пытаетесь закодировать текст в base64? Если вы делаете это во внешнем интерфейсе, используя Javascript для получения значения, вы должны знать, что значение содержит только LF. Если вы делаете это в бэкенде после отправки тела по POST, то да, значение содержит CRLF и что-то не так.
Но я предполагаю, что из вашего описания проблемы вы находитесь в первом случае -frontend-, поэтому виновата не кодировка.
Итак, когда вы получаете значение из текстовой области, вы можете сделать что-то вроде
value.replace(/\r\n/g, "\n").replace(/\n/g, "\r\n")
чтобы всегда получать CRLF.
Так говорят стандарты. Если вы размещаете CRLF, после редактирования они преобразуются в LF. Вы можете проверить с помощью console.info после изменения значения. Вы можете ввести что-то вроде console.info({v: e.target.value}), чтобы четко видеть управляющие символы. Вы также можете попробовать добавить значение по умолчанию, а затем преобразовать в base64 без редактирования. У вас должны быть ваши драгоценные CR.
Есть ли способ изменить этот стандарт?
Кажется, нет никакого способа это сделать. Мое предложение состоит в том, что, когда вы читаете текст, 1) конвертируйте все CRLF в LF, а затем 2) конвертируйте все LF в CRLF. Таким образом, вы всегда будете получать строки CRLF в любом случае (контент редактировался или нет, начальное значение содержало CRLF или LF). Что-то вроде value.replace(/\r\n/g, "\n").replace(/\n/g, "\r\n") должно быть достаточно
да, я во фронтенде, не могли бы вы объяснить мне, почему значение содержит только LF? Прежде чем поместить его в текстовую область, он содержит CRLF, так почему и когда javascript удаляет его?