diff -u kmid-original/kdisptext.h kdemultimedia-3.1.1/kmid/kdisptext.h
--- kmid-original/kdisptext.h	2001-05-01 06:33:46.000000000 +0700
+++ kdemultimedia-3.1.1/kmid/kdisptext.h	2003-07-23 16:18:20.000000000 +0700
@@ -52,7 +52,8 @@
 {
     Q_OBJECT
 private:
-    
+    QTextCodec *lyrics_codec;    
+
     QFontMetrics *qfmetr;
     QFont *qtextfont;
     
diff -u kmid-original/kdisptext.cpp kdemultimedia-3.1.1/kmid/kdisptext.cpp
--- kmid-original/kdisptext.cpp	2002-10-27 04:20:12.000000000 +0600
+++ kdemultimedia-3.1.1/kmid/kdisptext.cpp	2003-07-23 16:23:13.000000000 +0700
@@ -25,6 +25,7 @@
 #include <qpainter.h>
 #include <qfont.h>
 #include <qfontmetrics.h>
+#include <qtextcodec.h>
 #include <qrect.h>
 #include <kglobal.h>
 #include <kinstance.h>
@@ -59,6 +60,10 @@
   qfmetr=new QFontMetrics(*qtextfont);
   nvisiblelines=height()/qfmetr->lineSpacing();
   autoscrollv=0;
+  
+  // SG
+  // TODO: make this to select encoding from drop-down box
+  lyrics_codec=QTextCodec::codecForName("CP1251");
 }
 
 KDisplayText::~KDisplayText()
@@ -208,15 +213,15 @@
                         tmpx=5;
 
                         tmp->xpos=tmpx;
-                        if (tmp->spev->text[0]!=0) tmpw=qfmetr->width(&tmp->spev->text[1]);
+                        if (tmp->spev->text[0]!=0) tmpw=qfmetr->width(lyrics_codec->toUnicode(&tmp->spev->text[1]));
 				else tmpw=0;
-                        tmp->r=qfmetr->boundingRect(&tmp->spev->text[1]);
+                        tmp->r=qfmetr->boundingRect(lyrics_codec->toUnicode(&tmp->spev->text[1]));
                     }
                     else
                     {
                         tmp->xpos=tmpx;
-                        tmpw=qfmetr->width(tmp->spev->text);
-                        tmp->r=qfmetr->boundingRect(tmp->spev->text);
+                        tmpw=qfmetr->width(lyrics_codec->toUnicode(tmp->spev->text));
+                        tmp->r=qfmetr->boundingRect(lyrics_codec->toUnicode(tmp->spev->text));
                     }
 	// We add 5 pixels above, below and to the right because of a
 	// problem with latest released Xft
@@ -235,7 +240,7 @@
         maxX[(typeoftextevents==1)?0:1]=maxx+10;
         maxY[(typeoftextevents==1)?0:1]=
 		nlines_[(typeoftextevents==1)?0:1]*lineSpacing+descent+10;
- 
+
         if (typeoftextevents==1) typeoftextevents=5;
         else fin=1;
     }
@@ -278,7 +283,7 @@
        nlinestodraw++;
        t=t->next;
        }
-    
+
     i=0;
     while ((i<nlinestodraw)&&(tmpl!=NULL))
     {
@@ -286,18 +291,18 @@
         while ((tmp!=NULL)&&(tmp->spev->type!=typeoftextevents)) tmp=tmp->next;
         while (tmp!=NULL)
         {
-            if ( colorplayed && 
+            if ( colorplayed &&
                  //	(tmp->spev->absmilliseconds>=cursor->spev->absmilliseconds))
                  (tmp->spev->id>=cursor->spev->id))
             {
                 p->setPen(black);
                 colorplayed=0;
-            }	
-            
+            }
+
             if (IsLineFeed(tmp->spev->text[0],tmp->spev->type))
-                p->drawText(tmp->xpos,tmpl->ypos,&tmp->spev->text[1]);
+                p->drawText(tmp->xpos,tmpl->ypos,lyrics_codec->toUnicode(&tmp->spev->text[1]));
             else
-                p->drawText(tmp->xpos,tmpl->ypos,tmp->spev->text);
+                p->drawText(tmp->xpos,tmpl->ypos,lyrics_codec->toUnicode(tmp->spev->text));
 
 #ifdef DRAW_BOUNDING_RECTS
 	    p->setPen(red);
@@ -310,13 +315,13 @@
         i++;
         tmpl=tmpl->next;
     }
-    
+
 }
 
 
 void KDisplayText::resizeEvent(QResizeEvent *e)
 {
-    QScrollView::resizeEvent(e);  
+    QScrollView::resizeEvent(e);
     nvisiblelines=visibleHeight()/qfmetr->lineSpacing();
     if ( (nlines>nvisiblelines) || (nvisiblelines==0) )
         resizeContents(maxX[(typeoftextevents==1)?0:1],maxY[(typeoftextevents==1)?0:1]);
diff -u kmid-original/main.cpp kdemultimedia-3.1.1/kmid/main.cpp
--- kmid-original/main.cpp	2002-01-26 23:26:42.000000000 +0600
+++ kdemultimedia-3.1.1/kmid/main.cpp	2003-07-23 16:24:49.000000000 +0700
@@ -26,6 +26,7 @@
 #include <signal.h>
 
 #include <qwidget.h>
+#include <qtextcodec.h>
 
 #include <kapplication.h>
 #include <klocale.h>
@@ -44,6 +45,7 @@
     printf("This is free software, and you are welcome to redistribute it\n");
     printf("under certain conditions\n");
 
+    QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
 /*
     struct sigaction act;
     act.sa_handler = SIG_DFL;
@@ -93,6 +95,8 @@
         };
 */
 
+
+    
     return app.exec();
 };
 
