Среда:
Устройство: Raspberry Pi Zero 2 WОперационная система: ОС Raspberry Pi
Опробованные версии Python: Python 3.11 (последняя версия Tkinter), Python 3.8 (создан на основе совместимого более старого Tkinter)
Tkinter Версии: последняя и более ранние версии, соответствующие Python 3.8.
Установленные шрифты: известно, что несколько шрифтов поддерживают китайские символы, включая Noto Sans CJK.
Признаки:Работает:
Китайские иероглифы корректно отображаются в заголовке окна.
Китайские иероглифы корректно отображаются в терминале.
Китайские иероглифы корректно отображаются при открытии скрипта Python с помощью nano.
/>Не работает:
Китайские символы в виджетах Tkinter Label отображаются как escape-последовательности Юникода (например, \u4e2d\u6587).
Пример кода:
Вот минимальный пример, воспроизводящий проблему:
Код: Выделить всё
import tkinter as tk
root = tk.Tk()
root.title("字体测试")
# 创建字体列表
fonts = [
("宋体", 12),
("Arial", 12),
("微软雅黑", 12),
("Times New Roman", 12),
("Courier New", 12),
("Verdana", 12),
("黑体", 12),
("Noto Sans", 12),
("Noto Sans SC", 12),
("DejaVu Sans", 12),
("Liberation Sans", 12),
("Georgia", 12),
("Comic Sans MS", 12),
]
# 为每种字体创建标签并显示
for font_name, font_size in fonts:
label = tk.Label(root, text=f"使用 {font_name} 字体", font=(font_name, font_size))
label.pack()
# 进入主循环
root.mainloop()
На Raspberry Zero2W
Что я пробовал:
- Настройки языкового стандарта:
Проверено, что языковой стандарт системы установлен в UTF-8 с помощью команды locale.
Подтверждено, что заголовок окна и терминал обрабатывают китайский язык. символы правильно. - Шрифты:
Установлены Noto Sans CJK и другие шрифты, поддерживающие китайские иероглифы.
Указаны разные шрифты в виджетах Tkinter, чтобы убедиться, что они поддерживают китайский язык. - Версии Python и Tkinter:
Протестировано с Python 3.11 и Python 3.8.
Установлены как последние, так и совместимые старые версии. Tkinter.
Попытки переустановки и установки. - Перекомпиляция Tcl/Tk:
Попытка перекомпилировать Python с установленным Tcl /Tk, но из-за этого Raspberry Pi Zero 2 W остановился и потребовал перезагрузки.
Запрос на помощь:
Кто-нибудь сталкивался с подобной проблемой, когда Tkinter отображал escape-символы Юникода вместо китайских символов на Raspberry Pi? Что может быть причиной неправильной обработки виджетами Tkinter строк Юникода в этой среде и как это устранить?
Подробнее здесь: https://stackoverflow.com/questions/793 ... nese-chara