Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
1 / 1 / 1
Регистрация: 14.04.2024
Сообщений: 175

Прямоугольники вместо букв

08.11.2024, 01:08. Показов 1549. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Передаю получаемые строки от парсинга каналов Телеграм в richTextBox. Иногда (только иногда) в строке все буквы заменяются на прямоугольники. Ту же строку без изменений озвучиваю SpeechSynthesizer, озвучка нормальная. Почему такое может быть?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.11.2024, 01:08
Ответы с готовыми решениями:

Вместо символа переноса строки Word выводит прямоугольники
Здравствуйте. При работе моей программы на другой машине (Win XP, net frame 4.0, MS Word 2010) обнаружилось странное. Word не может...

Интерфейс Nedit: прямоугольники вместо букв
Почему вместо букв отображаются прямоугольники и как можно исправить данный баг? Выхлоп консоли при запуске nedit прилагается.

Почему при копировании из Matcad 15 в Word вместо русских букв получаются какие-то "каракули" - непонятные символы вместо букв
Я пользуюсь Matcad 15. Почему при копировании набранного текста из рабочей области Matcad 15 в документ Word вместо русских букв получаются...

16
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
08.11.2024, 10:08
Либо ошибка при работе с кодировками, либо шрифт, используемый в RichTextBox, не поддерживает некоторые символы, напр. смайлики.
1
1 / 1 / 1
Регистрация: 14.04.2024
Сообщений: 175
08.11.2024, 14:15  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Либо ошибка при работе с кодировками, либо шрифт, используемый в RichTextBox, не поддерживает некоторые символы, напр. смайлики.
Никаких кодировок явно нигде не пишу. Заменяется прямоугольниками не символы, а все сообщение. Когда оно заменяется, а когда нет пока непонятно, не из-за фото, один и тот же канал илжет отобразиться как с прямоугольниками, так и без них. Если сообщение с прямоугольниками скопировать из RichTextBox и вставить в блокнот оно отобразится правильно.
Пример : скан RichTextBox и его копирование:
.....................................
08.11.2024 13:07:07 israel_9 ️ Полиция Амстердама изучает сообщения о том, что ночью могли быть взяты заложники. Трое израильтян не выходят на связь с близкими.


.....................................
08.11.2024 13:09:07 topor SHAMAN получил звание «Заслуженный артист России» в Кремле

Эту награду можно получить лишь спустя 20 лет творческой деятельности, певцу сейчас всего 32 года.
.....................................
08.11.2024 13:11:11 cryptoattack24 ������ 8 часов назад трейдер заработал >380 000 $ всего за 2 часа!
Он купил 32 750 341 #UPONLY за 19,8 $SOL (3 962 $). Затем, в течение 2 часов после покупки, он продал все UPONLY за 1 906 SOL (~380 000 $) — прибыль составила ~9 682%.

Примечательно, что Smart Money начали активно закупать UPONLY только спустя 40 минут после запуска - в 04:33. В результате уже в 06:02 по мск актив занял 1 место в топе самых популярных новых токенов у Smart Money. С момента их покупок UPONLY вырос на +15000%.
.....................................
08.11.2024 13:12:43 israel_9 "Мы стали Газой Европы": только один европейский политик решился назвать погром в Амстердаме
Миниатюры
Прямоугольники вместо букв  
0
1 / 1 / 1
Регистрация: 14.04.2024
Сообщений: 175
08.11.2024, 14:15  [ТС]
.....................................
08.11.2024 13:07:07 israel_9 ️ Полиция Амстердама изучает сообщения о том, что ночью могли быть взяты заложники. Трое израильтян не выходят на связь с близкими.


.....................................
08.11.2024 13:09:07 topor SHAMAN получил звание «Заслуженный артист России» в Кремле

Эту награду можно получить лишь спустя 20 лет творческой деятельности, певцу сейчас всего 32 года.
.....................................
08.11.2024 13:11:11 cryptoattack24 ?????? 8 часов назад трейдер заработал >380 000 $ всего за 2 часа!
Он купил 32 750 341 #UPONLY за 19,8 $SOL (3 962 $). Затем, в течение 2 часов после покупки, он продал все UPONLY за 1 906 SOL (~380 000 $) — прибыль составила ~9 682%.

Примечательно, что Smart Money начали активно закупать UPONLY только спустя 40 минут после запуска - в 04:33. В результате уже в 06:02 по мск актив занял 1 место в топе самых популярных новых токенов у Smart Money. С момента их покупок UPONLY вырос на +15000%.
.....................................
08.11.2024 13:12:43 israel_9 "Мы стали Газой Европы": только один европейский политик решился назвать погром в Амстердаме
0
151 / 135 / 29
Регистрация: 02.07.2013
Сообщений: 969
08.11.2024, 14:39
Цитата Сообщение от AndreyAndreyA Посмотреть сообщение
Никаких кодировок явно нигде не пишу
в дебагере нормально строку выводит?
если да, то проверьте будет ли одинаковое числовое значение у двух одинаковых символов из "квадратного" текста и нормального.

Добавлено через 14 минут
ну и заодно свой код покажите, где у вас добавление сообщения в ричтекст бокс идет
0
1 / 1 / 1
Регистрация: 14.04.2024
Сообщений: 175
08.11.2024, 15:55  [ТС]
kolorotur,
Цитата Сообщение от golosalex Посмотреть сообщение
проверьте будет ли одинаковое числовое значение у двух одинаковых символов из "квадратного" текста и нормального.
Имхо, дела в следующем. И блокнот и RichTextBox анализируют текст для определения кодировки, а потом его отображают. В блокноте UTF-8. RichTextBox.AppendText, который использую, не имеет в параметрах кодировку. В свойствах тоже нет. Если бы открывался файл, то можно было бы указать кодировку, но как указать кодировку в таком случае?

Добавлено через 11 минут
kolorotur, golosalex, сейчас попробую:
C#
1
2
byte[] bytes = Encoding.Default.GetBytes(myString);
myString = Encoding.UTF8.GetString(bytes);
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
08.11.2024, 17:36
Цитата Сообщение от AndreyAndreyA Посмотреть сообщение
RichTextBox.AppendText, который использую, не имеет в параметрах кодировку.
Если у вас "на руках" строка, то о кодировках уже поздно думать.
Кодировку надо указывать в том месте, где полученные байты преобразуются в string.
Если класс, через который вы работаете с Телеграмом возвращает уже строку, то ищите где в этом классе надо указать кодировку.
Если возвращает массив байтов, то указывайте кодировку там, где вы их преобразуете в строку.

Цитата Сообщение от AndreyAndreyA Посмотреть сообщение
byte[] bytes = Encoding.Default.GetBytes(myString);
myString = Encoding.UTF8.GetString(bytes);
Это уже переливание из пустого в порожнее.
Строки в дотнете всегда в UTF-16, никакой другой кодировки у myString быть не может, потому такое "перекодирование" по сути ничего не делает.
1
1 / 1 / 1
Регистрация: 14.04.2024
Сообщений: 175
08.11.2024, 21:14  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
кодировках уже поздно думать.
Пользуюсь сторонней библиотекой, которая возвращает строки чатов. Т.е. сделать уже ничего нельзя, кроме как связываться с разработчиками?
C#
1
myString = Encoding.UTF8.GetString(bytes);
все равно возвратит UTF-16?

Почему же только иногда происходит замена всех символов на прямоугольники? Может, все-таки RichTextBox анализирует частоту разных символов и иногда отображает не в нужной кодировке? И почему озвучка правильно озвучивает?

Добавлено через 11 минут
После замены, которую здесь привел, по-прежнему иногда в тексте прямоугольники. Причем на одном чате был длинный текст, половина его в прямоугольниках, половина нормальная.
0
22 / 17 / 5
Регистрация: 03.03.2022
Сообщений: 77
08.11.2024, 23:18
Цитата Сообщение от AndreyAndreyA Посмотреть сообщение
строки чатов
Что это значит?

В прочем не важно. Я бы на вашем месте дебажил код, по двум строчкам кода сложно сказать, что происходит. Но скажу точно, что utf-8 возвращает битый символ, если он не дополучил байтов для раскодировки. Например, изначально была отправлена такая строка: "па-пара-пара-пам-пам", скажу сразу примерную раскадровку для utf-8:
1 байт - первые 128 символов ASCII таблицы, это весь английский алфавит, многие знаки препинания, а первые 32 это вообще служебные символы, на выводе они в теории видны, например, можно увидеть символа переноса строки, или табуляции, особенно, если выделить текст, но такие символы считаются служебными.
2 байта - русские, европейские и арабские буквы
3 байта - азиатские буквы, в частности китайские иероглифы, коих свыше 1000
4 байта - различного рода смайлики.

[SPOILER][CSHARP]
char russEuprLetter = 'Ї';
char arabicLetter = 'ي';
char chineLetter = '在';
char coreanLetter = '이';
char japanLetter = 'に';
string othCHar = "
1
22 / 17 / 5
Регистрация: 03.03.2022
Сообщений: 77
08.11.2024, 23:19
вложение прилагается
Миниатюры
Прямоугольники вместо букв  
0
22 / 17 / 5
Регистрация: 03.03.2022
Сообщений: 77
08.11.2024, 23:34
И, как вариант, может быть richTextBox действительно не поддерживает рендеринг каких-либо символов. Его свойство Text, может быть и string`ом, но сама визуальная часть не умеет рендерить те или иным символы. Поэтому с блокнотом могут быть такие фокусы, когда вставляешь корректный текст, который в richTextBox вроде бы отображался неправильно
1
1 / 1 / 1
Регистрация: 14.04.2024
Сообщений: 175
09.11.2024, 02:14  [ТС]
Timure4953985,
Никакого буфера не определяю. В сторонней библиотеке есть метод, который выдает сообщения чатов в виде строк. Больше ни к чему доступа нет.
Цитата Сообщение от Timure4953985 Посмотреть сообщение
Главное, соберись с мыслями, обдумай, какой результат дебагинга ты хочешь получить
Еще надо, вероятно, повизуализировать хорошее решение проблемы. Сейчас в моде больше такие советы.
Цитата Сообщение от Timure4953985 Посмотреть сообщение
последний байт парсер не смог корректно обработать, поскольку ожидался парный байт.
Идея понятна, что возможно, в библиотеке неверно определен буфер. Но тогда бы сначала шли нормальные буквы и только последний символ бы был служебный. К тому же, тогда и блокнот строку также получил с последним не тем символом. К тому же вряд ли буфер определялся бы то нормально, то заглючил. Какой смысл дебажить, если кодировку поменять нельзя?
0
151 / 135 / 29
Регистрация: 02.07.2013
Сообщений: 969
11.11.2024, 12:47
Цитата Сообщение от AndreyAndreyA Посмотреть сообщение
Почему же только иногда происходит замена всех символов на прямоугольники? Может, все-таки RichTextBox анализирует частоту разных символов и иногда отображает не в нужной кодировке? И почему озвучка правильно озвучивает?
на правах рассуждений: программисты телеграм канала из разных мест сами воруют информацию и постят. так как воруют из разных мест то строки получаются с разным форматом utf8 или utf8 без boom (это заголовок такой). телега умная и последовательность байт с разным форматом отличит(потому и програмисты не парились раз работает) а у вас нет кода проверки и последовательность байт с заголовком и без не собирается. я бы порекомендовал вытащить в отдельный слой работу по парсингу текста из телеграм канала и тут его показать, без дебагера не понять что должно получиться
0
1 / 1 / 1
Регистрация: 14.04.2024
Сообщений: 175
19.12.2024, 13:34  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Это уже переливание из пустого в порожнее.
Закомментировал строку st = st.Replace('⚡', ' '); в ТГ канале, в котором появляются прямоугольники и все стало отображаться правильно. Пробовал st = st.Replace("⚡",""); Это тоже приводит к прямоугольникам.

Добавлено через 6 минут
Строки других ТГ каналов не вызывают ошибки, хотя, похоже, и не выполняются.
st = st.Replace("
0
1 / 1 / 1
Регистрация: 14.04.2024
Сообщений: 175
19.12.2024, 13:41  [ТС]
Не могу вставить код, который для строк в других каналах не приводят к ошибкам, но и не выполняется.
Миниатюры
Прямоугольники вместо букв  
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
19.12.2024, 13:51
AndreyAndreyA, какой библиотекой вы пользуетесь для работы с ТГ?
Можете поделиться ссылкой или хотя бы названием?
0
1 / 1 / 1
Регистрация: 14.04.2024
Сообщений: 175
19.12.2024, 14:02  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Можете поделиться ссылкой
Если вам для практической работы, то отвечу сейчас в личку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.12.2024, 14:02
Помогаю со студенческими работами здесь

Розовые прямоугольники вместо спрайтов
На планшете lenovo а5500 вместо всех спрайтов отображаются розовые прямоугольники (скрины как есть, и как должно быть, прилагаются). В...

Прямоугольники вместо пробелов в рандомных местах
Доброго времени суток, по прошествии какого-то времени заметил в некоторых материалах, что пробелы заменились некими прямоугольничками (см...

Белые прямоугольники вместо символов Linux Mint
Здравствуйте. У меня linux mint cinnamon 64bit, версии 20.2, если я не ошибаюсь, на OracleVM. Я полез обновлять пакеты, и после их...

В шаблоне вместо букв вопросы вместо русского языка
скачал макет сайта,меню на инглише,поменял на русские буквы и вместо букв вопросы , <!DOCTYPE HTML> <html...

Проверка текста на наличие иностранных букв вместо русской раскладки и цифр вместо нуля и буквы «з»
Есть такая задача, что то делаю видимо не так) Помогите решить... Создайте класс TextChecker. Его конструктор принимает строку и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru