Доброго времени суток,
хочу уметь преобразовывать некорректную utf-8 строку в (тоже, возможно, некорректную) строку utf-16, да так, чтобы при обратном преобразовании «некорретность» сохранилась, то бишь я не потерял никакой информации. Вот, что смог найти по этому поводу (увы, только википедия):
These replacement algorithms are «lossy», as more than one sequence is translated to the same code point. This means that it would not be possible to reliably convert back to the original encoding, therefore losing information. Reserving 128 code points (such as U+DC80–U+DCFF) to indicate errors, and defining the UTF-8 encoding of these points as invalid so they convert to 3 errors, would seem to make conversion lossless. But this runs into practical difficulties: the converted text cannot be modified such that errors are arranged so they convert back into valid UTF-8, which means if the conversion is UTF-16, it cannot also be used to store arbitrary invalid UTF-16, which is usually needed on the same systems that need invalid UTF-8. U+DC80–U+DCFF are reserved for UTF-16 surrogates, so that when they are used for UTF-8 in this way, and the string is converted to UTF-16 this can lead to bugs or the string being rejected.
Что-то не могу распарсить: о каких трех ошибках идет речь вот тут
...so they convert to 3 errors
и почему это поможет мне конвертировать без потерь?
Или, может быть, у кого-то есть уже похожий опыт?