powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Сравнение строк. Проблема с кодировкой ?
11 сообщений из 11, страница 1 из 1
Сравнение строк. Проблема с кодировкой ?
    #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
Сравнение строк. Проблема с кодировкой ?
    #40050289
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не смотри в консоль. Посмотри в отладке, что лежит в s и s1, сравни длину

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


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

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

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

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


Вроде 4

Надо знать кодировку, что приходит с порта.
...
Рейтинг: 0 / 0
Сравнение строк. Проблема с кодировкой ?
    #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
11 сообщений из 11, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Сравнение строк. Проблема с кодировкой ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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