Могу ли я узнать, приведет ли преобразование строки в ANSI к потере данных? - PullRequest
3 голосов
/ 16 ноября 2011

Скажем, когда я преобразую строку в байтовый массив, используя однобайтовую кодировку, некоторые символы будут заменены на '?':

string strData="©";
byte[] bytesData = Encoding.ASCII.GetBytes(strData);

Есть ли способ узнать, потеряет ли строка некоторые данные, если я преобразую ее в ANSI?

PS. Я не спрашиваю о преимуществах кодировок Unicode, таких как UTF-8.

Ответы [ 2 ]

6 голосов
/ 16 ноября 2011

Как насчет?

Encoding.ASCII.GetString(Encoding.ASCII.GetBytes(strData)) == strData;
3 голосов
/ 16 ноября 2011

Если вы создаете собственный экземпляр Encoder, вы можете указать EncoderFallback, один из предопределенных таких объектов: EncoderFallback.ExceptionFallback, который будет:

создает исключение, когда входной символ не может быть закодирован

...