Предположим, applicationForm
- это строка, которую вы читаете из какого-то текстового файла UTF8
.Это будет UTF16
/ Unicode
независимо от кодировки исходного файла.Преобразование произошло, когда вы загрузили файл в строку.
Ваш код закодирует строку applicationForm
в MemoryStream
из UTF8
байтов.
Это может или не может бытьисправить в зависимости от того, что вы хотите с ним сделать.
.Net строки всегда UTF16
или Unicode
.Когда Strings
преобразуются в файлы, потоки или byte[]
, они могут кодироваться различными способами.1 байт недостаточно для хранения всех различных символов, используемых во всех языках, поэтому необходимо кодировать более сложные строки, чтобы один символ мог быть представлен более чем одним байтом, иногда или всегда в зависимости от используемой кодировки.
Если вы используете простую кодировку, например ASCII
, один символ всегда будет состоять из одного байта, но данные будут ограничены набором символов ASCII
.Преобразование в 'ASCII' из любой кодировки UTF может привести к потере данных, если используются какие-либо многобайтовые символы.
Для получения полной картины на Unicode перейдите сюда .
РЕДАКТИРОВАТЬ 1: Запретить дополнительную информацию о компоненте GenerateApplicationForm , включая UTF8
, вероятно, будет правильным выбором.Если это не помогло, попробуйте ASCII
или UTF16
.Лучше всего обратиться к исходному коду компонента или поставщику компонента.
РЕДАКТИРОВАТЬ 2: Определенно UTF8
тогда вы были правы все время.