Кириллица в textBox Win-окна

Главная Форумы Python Помогите с питон кодом Кириллица в textBox Win-окна

  • В этой теме 8 ответов, 5 участников, последнее обновление 6 лет назад сделано Denver-22.
Просмотр 9 сообщений - с 1 по 9 (из 9 всего)
  • Автор
    Сообщения
  • #7540 Score: 0
    Denver-22
    Участник
    6 pts

    Добрые люди помогли со скриптом для вывода результата в Win-окно.
    Но выяснилось, что текст, подаваемый на self._textBox1.AppendText(Text) не поддерживает кириллические символы.
    Причем кириллица нормально отображается в других местах:
    self._label1.Text = "Скопируйте результат отчета"
    self.Text = "Результат индексации"
    Помогите научить скрипт показывать результат и в кириллице.

    Полный код: https://pastebin.com/ekD2FdEL

    #7541 Score: 0
    Legantmar
    Хранитель
    473 pts

    попробуй добавить .encode(‘utf-8’) или .decode(‘utf-8’) в зависимости от того откуда Text берется

    #7543 Score: 0
    Denver-22
    Участник
    6 pts

    Пробовал заменить 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’).
    Ничего не вышло. Наверное не туда добавляю код.

    #7673 Score: 0
    Семен
    Участник
    5 pts

    Как минимум стоит ‘utf-8’ заменить на ‘utf-8’ (обратить внимание на символ одинарной кавычки).

     

     

    #7676 Score: 0
    Denver-22
    Участник
    6 pts

    Похоже понял о чем речь. Поправил. Теперь другая ошибка выдается:
    Предупреждение: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

    #7691 Score: 1
    Anton
    Участник
    3 pts

    Попробуй добавить в начало кода эту строчку:
    # -*- coding: utf-8 -*-

    #7692 Score: 0
    Denver-22
    Участник
    6 pts

    Увы, ошибка та же.

    #7693 Score: 1
    Igor
    Участник
    1 pt

    Попробуй несколько вариантов отсюда: https://www.python.org/dev/peps/pep-0263/
    У меня хорошо срабатывает такой в начале кода(обязательно 1-я строка): # This Python file uses the following encoding: utf-8

    #7695 Score: 0
    Denver-22
    Участник
    6 pts

    Ваш вариант и некоторые другие не подошли.

    Сделал эксперименты и выяснил (может для вас это было и очевидно): зря я подозревал код, связанный с описанием 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 теперь не нужен.
    Всем откликнувшимся огромное спасибо! Без вас я бы так и сидел с проблемой…

Просмотр 9 сообщений - с 1 по 9 (из 9 всего)
  • Для ответа в этой теме необходимо авторизоваться.