Я хочу преобразовать Data
в String
с использованием кодировки utf8
, независимо от того, содержит ли Data
недопустимые символы:
var cafe = "Café".data(using: .utf8)!
cafe.count // 5
cafe.removeLast() // remove the "e", making parts of the string invalid utf8
cafe.count // 4
let s = String(decoding: cafe, as: UTF8.self) // "Caf�"
s.data(using: .utf8)?.count // 6
В приведенном выше коде я преобразую недопустимый utf8 в String
, но преобразованная строка содержит данные, отличные от исходного двоичного представления. Есть ли способ сделать строку простым представлением данных?
РЕДАКТИРОВАТЬ: цель состоит в том, чтобы иметь возможность искать и заменять (и выполнять регулярные выражения) в двоичном файле (например, скомпилированный исполняемые файлы с разделом, являющимся строками). Скомпилированные исполняемые файлы, скорее всего, содержат байты, которые нельзя кодировать как utf8.