Что с кодировкой?

Хочу сделать так, чтоб названия песен в папке выводились на компонент ListWidget, но почему-то русские символы выводятся с искажениями, вот так:
0ede6270b91549809dd27635e78d2dc0.png
Однако, в терминале вывод без искажений.

Программа работает по такому коду:
#coding: utf-8

import os
import sys
from PyQt4 import QtGui,QtCore

class Window(QtGui.QWidget):
	def __init__(self,parent=None):
		QtGui.QWidget.__init__(self,parent)
		self.setGeometry(200,200,300,450)
		
		self.button = QtGui.QPushButton(u' поиск ',self)
		self.button.setGeometry(0,400,300,50)
		
		self.connect(self.button,QtCore.SIGNAL('clicked()'),self.searchFiles)
		
		self.listBox = QtGui.QListWidget(self)
		self.listBox.setGeometry(0,0,300,400)
		
	def searchFiles(self):
		for d,dirs,files in os.walk('/home/good_inc/Музыка'):
			for f in files:
				print f
				self.listBox.addItem(f)
		
app = QtGui.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())


как исправить?
  • Вопрос задан
  • 307 просмотров
Решения вопроса 1
bobrovskyserg
@bobrovskyserg
self.button = QtGui.QPushButton(u' поиск ',self) - всё в порядке, стало быть, перед
self.listBox.addItem(f) надо приводить f к юникоду.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@vilgeforce
Раздолбай и программист
QTextCodec::codecForName("Windows-1251");
codec->toUnicode("блаблабла");

что-то типа такого не прокатит?
Ответ написан
Комментировать
skipirich
@skipirich
проходил мимо
Есть еще вот такой "радикальный" способ:
import sys

reload(sys)
sys.setdefaultencoding('utf-8')

Ну а дальше self.button = QtGui.QPushButton(' поиск ',self) - без u.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы