Отображение локализованных дат в метке tkinter приводит к искаженному тексту - PullRequest
0 голосов
/ 03 декабря 2018

Я помещаю локализованную строку даты в метку.Это отлично работает на английском языке, но когда я использую locale.setlocale(locale.LC_TIME, "it_IT") для форматирования даты на итальянском языке, результаты искажаются:

Incorrect output when using setlocale

Вот соответствующие части кода:

from tkinter import *
import locale
from datetime import date

root = Tk()
locale.setlocale(locale.LC_TIME, "it_IT")
today = date.today().strftime('%A %d %B')
Label(root, text=today, bg='black', fg='white', font=("arial", 35)).pack()

root.mainloop()][1]

ì (i с акцентом) отображается здесь как ì.

Я использую Python 3.6

Если я использую text="Lunedì 03 Dicembre" in the Label () `вызывает непосредственно вывод, является правильным.

Почему выход испорчен?

Correct output when entering literal string

1 Ответ

0 голосов
/ 03 декабря 2018

Вам необходимо использовать более конкретную локаль, одну с кодовой страницей для кодирования включенных символов:

locale.setlocale(locale.LC_TIME, "it_IT.UTF-8")

Я подозреваю, что для вашей системы по умолчанию установлено значение ISO8859-15 или ISO8859-1 и UTF-8-кодированное название дня расшифровывается с помощью одного из этих кодеков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...