Кириллица в textBox Win-окна
Главная › Форумы › Python › Помогите с питон кодом › Кириллица в textBox Win-окна
- В этой теме 8 ответов, 5 участников, последнее обновление 6 лет, 9 месяцев назад сделано Denver-22.
-
АвторСообщения
-
Добрые люди помогли со скриптом для вывода результата в Win-окно.
Но выяснилось, что текст, подаваемый наself._textBox1.AppendText(Text)
не поддерживает кириллические символы.
Причем кириллица нормально отображается в других местах:
self._label1.Text = "Скопируйте результат отчета"
self.Text = "Результат индексации"
Помогите научить скрипт показывать результат и в кириллице.Полный код: https://pastebin.com/ekD2FdEL
попробуй добавить .encode(‘utf-8’) или .decode(‘utf-8’) в зависимости от того откуда Text берется
Пробовал заменить
Text="".join(str(i) for i in IN[1])
наText="".join(str(i).decode(‘utf-8’) for i in IN[1])
.
Также пробовал заменуself._textBox1.AppendText(Text)
наself._textBox1.AppendText(Text.decode(‘utf-8’))
.
Аналогично с .encode(‘utf-8’).
Ничего не вышло. Наверное не туда добавляю код.Как минимум стоит ‘utf-8’ заменить на ‘utf-8’ (обратить внимание на символ одинарной кавычки).
Похоже понял о чем речь. Поправил. Теперь другая ошибка выдается:
Предупреждение:IronPythonEvaluator.EvaluateIronPythonScript операция не выполнена.
Traceback (most recent call last):
File “”, line 11, in
File “”, line 11, in
UnicodeEncodeError: (‘unknown’, ‘\x00’, 0, 1, ”)Выложу здесь куски кода, куда возможно надо внести правки – подскажите пожалуйста куда:
1:
Text="".join(str(i) for i in IN[1])
2:
# textBox1
#
self._textBox1.Location = System.Drawing.Point(50, 60)
self._textBox1.AppendText(Text)
self._textBox1.Name = "textBox1"
self._textBox1.Size = System.Drawing.Size(300, 300)
self._textBox1.TabIndex = 0Увы, ошибка та же.
Ваш вариант и некоторые другие не подошли.
Сделал эксперименты и выяснил (может для вас это было и очевидно): зря я подозревал код, связанный с описанием textBox1 (см. выше). Когда ввел в него вручную кириллический текст – он отобразился без проблем. Значит косячит только 1 строка:
Text="".join(str(i) for i in IN[1])
Она и упоминается каждый раз в Python-описании ошибки (см. выше).Соответственно, если кириллицу одной строкой подаю как
Text=IN[1]
, всё замечательно.
Похоже str или join не любят кириллицу. Но ведь должны…Пока нашел “костыльное” решение:
– имея на входе список:
"Текст1";
"Текст2";
– объединяю его в ноде String.Join с сепаратором “\n”;
–Text=IN[1]
Такую схему скрипт кушает правильно!
Похоже я нодом по сути сделал то же, что делал проблемный код. И даже coding: utf-8 теперь не нужен.
Всем откликнувшимся огромное спасибо! Без вас я бы так и сидел с проблемой… -
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.