Возможна ли потеря данных при преобразовании двоичных данных в кодировку Windows-1252? - PullRequest
4 голосов
/ 30 января 2012

Я понимаю, что лучший способ преобразовать двоичные данные в текстовый формат - это использовать кодировку base64. UTF-8 может привести к потерям. Но когда я исследовал это, я обнаружил, что кодировка Windows-1252, по-видимому, не приводит к потере данных из-за своего дизайна.

Я предоставляю намного больше контекста в моем блоге здесь .

В конце я приведу несколько причин, по которым я все еще не буду хранить двоичные данные в виде строки Windows-1252. Но мне любопытно, есть ли там реальный сценарий потери данных, который я не рассматривал.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2014

Действительно, о проблеме лучше подумать, если учесть, что вы не конвертируете binary data в CP1252, но в C# вы конвертируете binary data как CP1252 в UTF-16, поэтому вопрос CP1252 -> UTF-16 -> CP1252 гарантирует отсутствие полиморфных мутаций.

Текстовый кодировщик .net наилучшим образом подходит для UTF-16 -> CP1252, что в лучшем случае звучит ненадежно, хотя может и хорошо, но не так уж много сценариев, в которых вы могли бы сделать что-нибудь с этим UTF-16 строка в середине, которая все еще гарантирует отсутствие потери данных, и она намного менее эффективна, чем байтовый массив.

0 голосов
/ 30 января 2012

Вы НЕ должны помещать двоичные данные в строку, потому что двоичные данные могут содержать байты со значениями ниже 32. Это не имеет ничего общего с кодировкой строки.

И я не уверен, где выполучил «UTF-8 с потерями, но CP1252 нет» от.Но я не уверен, что хочу знать.

...