Кодировка при сохранении в буфер обмена с помощью 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]))

Нет больше прикольных символов на немецком или японском языках. Другие языки, такие как французский и китайский, теперь также работают.

Еще раз спасибо за вклад! Это очень помогло получить новый взгляд на код.

Другие вопросы по тегам