Это было в ответ на ваш другой вопрос, похоже, что он был удален .... точка все еще остается в силе.
Похоже на классическую версию Unicode для ASCII . Хитрость заключается в том, чтобы найти , где это происходит.
.NET отлично работает с Unicode, при условии, что сказано, что это Unicode для начала (или оставлено по умолчанию).
My думаю, означает, что ваше принимающее приложение не может справиться с этим. Итак, я бы, вероятно, использовал ASCIIEncoder с и EncoderReplacementFallback с String.Empty:
using System.Text;
string inputString = GetInput();
var encoder = ASCIIEncoding.GetEncoder();
encoder.Fallback = new EncoderReplacementFallback(string.Empty);
byte[] bAsciiString = encoder.GetBytes(inputString);
// Do something with bytes...
// can write to a file as is
File.WriteAllBytes(FILE_NAME, bAsciiString);
// or turn back into a "clean" string
string cleanString = ASCIIEncoding.GetString(bAsciiString);
// since the offending bytes have been removed, can use default encoding as well
Assert.AreEqual(cleanString, Default.GetString(bAsciiString));
Конечно, в старые времена мы просто зацикливались и удаляли любые символы больше 127 ... ну, по крайней мере, те из нас, кто в США. ;)