Я хочу заменить «\\» из последовательности байтов (Data.ByteString) на «\», но из-за внутреннего экранирования «\» это не сработает. Рассмотрим следующий пример:
Исходная строка байтов:
"\159\DEL*\150\222/\129vr\205\241=mA\192\184"
После сохранения и повторного чтения из базы данных я получаю следующую строку байтов:
"\"\\159\\DEL*\\150\\222/\\129vr\\205\\241=mA\\192\\184\""
Представьте, что строка байтов используется в качестве криптографического ключа, который теперь является неправильным ключом из-за недопустимых символов в последовательности. Эта проблема на самом деле возникает из-за неправильного представления базы данных (varchar вместо bytea), потому что в противном случае это считается недопустимой последовательностью utf-8. Я попытался заменить недопустимые символы, используя какой-то подход split-modify-concat, но все, что я получаю, это что-то без обратной косой черты внутри последовательности, потому что я не могу вставить одну обратную косую черту в строку байтов.
Очень прошу вашей помощи.
show
, которые добавляют нежелательные escape-последовательности. - person chi   schedule 11.06.2016