Кодировка при сохранении в буфер обмена с помощью pyperclip в скрипте tkinter
Я собираю клиента в Python 3.5, который можно использовать для получения завершенных заданий перевода с сайта. Я решил использовать кнопки, которые копируют переведенный контент в буфер обмена для удобства использования. В зависимости от того, является ли перевод простым текстом или сохранен в файле, кнопки отображают либо "Скачать", либо "Копировать в буфер обмена".
Он работает по большей части - я могу без проблем копировать и вставлять тексты на английском языке, нажав кнопку, а затем вставив содержимое в текстовый редактор.
К сожалению, я имею несколько забавных персонажей, когда имею дело с немецким языком (например, ä, ö и ü), и японский язык превращается в кашу.
def retrieveJobs(self):
availableJobIDs = gengo.getTranslationJobs(status='reviewable')['response']
text_count = 0
text_dict = {}
file_count = 0
file_dict = {}
for i in range(len(availableJobIDs)):
job = gengo.getTranslationJob(id=availableJobIDs[i]['job_id'])['response']['job']
title = job['slug']
titleLabel = tk.Label(self, text=title)
titleLabel.grid(row=i+3, sticky=tk.E)
if 'file_url_tgt' in job.keys():
link = job['file_url_tgt']
file_dict[file_count] = link
linkButton = tk.Button(self, text='ダウンロード',
command=lambda file_count=file_count: urllib.request.urlopen(url=file_dict[file_count]))
linkButton.grid(row=i+3, column=1, sticky=tk.W+tk.E)
file_count += 1
else:
text = job['body_tgt']
text_dict[text_count] = text
copyButton = tk.Button(self, text='訳文をコピーする',
command=lambda text_count=text_count: tk.clipboard_append(text_dict[text_count]))
copyButton.grid(row=i+3, column=1, sticky=tk.W)
text_count += 1
Заголовок сценария отмечен
# -*- coding: utf-8 -*-
Тем не менее, когда я нажимаю одну из кнопок, чтобы скопировать текст на японском языке, как
これはどのように動作し、すべての順序のどこに表示する短いテキストです。
(не обращайте внимания на смысл, это бред) и скопируйте его в файл Word, получившийся текст выглядит так:
これはどのように動作し、すべての順序のどこに表示する短いテキストです。
Как я могу изменить код для правильного отображения японских символов? Как видно из кода, текст хранится в словаре и на тот момент остается неизменным. Только когда вытащить его с помощью Pyperclip, он становится все фанк.
Я надеюсь, что объяснение достаточно.
Заранее спасибо!
1 ответ
Оказывается, мне нужно было сделать лишь небольшую корректировку:
copyButton = tk.Button(self,
text='訳文をコピーする',
command=lambda text_count=text_count: tk.clipboard_append(text_dict[text_count]))
Функциональная версия выглядит так:
copyButton = tk.Button(self,
text='訳文をコピーする',
command=lambda text_count=text_count: root.clipboard_append(text_dict[text_count]))
Нет больше прикольных символов на немецком или японском языках. Другие языки, такие как французский и китайский, теперь также работают.
Еще раз спасибо за вклад! Это очень помогло получить новый взгляд на код.