Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Сравнение строк. Проблема с кодировкой ? / 11 сообщений из 11, страница 1 из 1
03.03.2021, 13:04
    #40050262
limarukraine
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение строк. Проблема с кодировкой ?
Доброго времени суток.

У меня с COM порта считывается строка. Потом я проверяю равна ли эта строка заданной. Однако даже если я ввожу только один символ и он правильно отображается при выводе в консоль (скрин прикреплен) то сравнение у меня false. В чем причина ? В кодировке ?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
int count = port.BytesToRead;
            byte[] ByteArray = new byte[count];
            port.Read(ByteArray, 0, count);
            string s = System.Text.Encoding.UTF8.GetString(ByteArray, 0, ByteArray.Length);
            Console.WriteLine("Input string: {0}", s);
string s1 = "D";
            if (String.Compare(s, s1) == 0)
            {
                Console.WriteLine("Poradok: ");
            }                    
            else
            {
                Console.WriteLine("Bezporadok: ");
            };



Если я в программе задаю сравнение строк просто заданных (а не введенных с COM порта) то они определяются как одинаковые, то есть все нормально

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
string s2 = "D";
                       
            string s1 = "D";
            if (String.Compare(s2, s1) == 0)
            {
                Console.WriteLine("Poradok: ");
            }                    
            else
            {
                Console.WriteLine("Bezporadok: ");
            };
...
Рейтинг: 0 / 0
03.03.2021, 13:44
    #40050289
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение строк. Проблема с кодировкой ?
Не смотри в консоль. Посмотри в отладке, что лежит в s и s1, сравни длину

или Console.WriteLine((int)s[0]) например
...
Рейтинг: 0 / 0
03.03.2021, 13:46
    #40050292
limarukraine
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение строк. Проблема с кодировкой ?
Уже посмотрел - там D
...
Рейтинг: 0 / 0
03.03.2021, 13:46
    #40050293
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение строк. Проблема с кодировкой ?
Чему равен count = port.BytesToRead;
...
Рейтинг: 0 / 0
03.03.2021, 13:47
    #40050294
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение строк. Проблема с кодировкой ?
Сравни коды символов и длину строк
...
Рейтинг: 0 / 0
03.03.2021, 13:50
    #40050296
limarukraine
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение строк. Проблема с кодировкой ?
Konst_One
Чему равен count = port.BytesToRead;


Вроде 4
...
Рейтинг: 0 / 0
03.03.2021, 13:53
    #40050299
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение строк. Проблема с кодировкой ?
смотри что в массиве, думаю там лишние символы
...
Рейтинг: 0 / 0
03.03.2021, 15:02
    #40050343
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение строк. Проблема с кодировкой ?
Shocker.Pro
Сравни коды символов и длину строк

Может там какая-то "D с ударением" :)
...
Рейтинг: 0 / 0
03.03.2021, 15:19
    #40050351
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение строк. Проблема с кодировкой ?
fkthat
Shocker.Pro
Сравни коды символов и длину строк

Может там какая-то "D с ударением" :)

Скорее всего в конце нулевые байты.
...
Рейтинг: 0 / 0
03.03.2021, 15:28
    #40050360
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение строк. Проблема с кодировкой ?
limarukraine
Konst_One
Чему равен count = port.BytesToRead;


Вроде 4

Надо знать кодировку, что приходит с порта.
...
Рейтинг: 0 / 0
03.03.2021, 15:35
    #40050365
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение строк. Проблема с кодировкой ?
limarukraine,

Код: powershell
1.
2.
3.
4.
5.
6.
7.
PS ~$ $NotD = [System.Text.Encoding]::UTF8.GetString(@(68, 0, 0, 0))
PS ~$ $NotD
D
PS ~$ $NotD.Length
4
PS ~$ $NotD.Equals('D')
False
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Сравнение строк. Проблема с кодировкой ? / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]