. NET Проблема строкового кодирования - PullRequest
0 голосов
/ 25 февраля 2020

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

var res = new List<byte>();
Encoding.UTF8.GetString(res.ToArray());

После проверки в отладчике после него появляется ряд непечатаемых символов:

"USD \ 0� (j \ f� \ u007f"

Когда я щелкаю увеличительное стекло по свойству в отладчике, Visual Studio правильно определяет строку как просто USD, но когда эта строка очевидно, что передается другим методам.

Мне нужна строка в формате, который Visual Studio идентифицирует как, т. е. USD, так что я предполагаю, что есть функция для ее очистки?

1 Ответ

0 голосов
/ 25 февраля 2020

Следующий код выполнит необходимую очистку ввода.

// Sample input with bytes beyond the null terminator.
byte[] binary = { (byte) '0', (byte) '1', (byte) '2', 0, (byte) '8', (byte) '9' };
int length;

// Find the null terminator or total length of input.
for (length = 0; length < binary.Length && binary[length] > 0; ++length);

string text = Encoding.UTF8.GetString(binary, 0, length);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...