diff -dPNur mpg123-0.59r-orig/common.c mpg123-0.59r-new/common.c
--- mpg123-0.59r-orig/common.c	2005-07-19 18:43:57.583934801 +0200
+++ mpg123-0.59r-new/common.c	2005-07-19 18:16:40.670756807 +0200
@@ -15,6 +15,7 @@
 #endif
 #endif
 
+#include "rccpatch.h"
 #include "mpg123.h"
 #include "genre.h"
 #include "common.h"
@@ -487,6 +488,8 @@
 	char comment[31]={0,};
 	char genre[31]={0,};
 
+	char *ctitle, *cartist, *calbum, *ccomment;
+	
 	if(param.quiet)
 		return;
 
@@ -495,6 +498,11 @@
 	strncpy(album,tag->album,30);
 	strncpy(year,tag->year,4);
 	strncpy(comment,tag->comment,30);
+	
+	ctitle = rccPatchRecode(title);
+	cartist = rccPatchRecode(artist);
+	calbum = rccPatchRecode(album);
+	ccomment = rccPatchRecode(comment);
 
 	if ( tag->genre <= sizeof(genre_table)/sizeof(*genre_table) ) {
 		strncpy(genre, genre_table[tag->genre], 30);
@@ -502,9 +510,14 @@
 		strncpy(genre,"Unknown",30);
 	}
 	
-	fprintf(stderr,"Title  : %-30s  Artist: %s\n",title,artist);
-	fprintf(stderr,"Album  : %-30s  Year  : %4s\n",album,year);
-	fprintf(stderr,"Comment: %-30s  Genre : %s\n",comment,genre);
+	fprintf(stderr,"Title  : %-30s  Artist: %s\n",ctitle?ctitle:title,cartist?cartist:artist);
+	fprintf(stderr,"Album  : %-30s  Year  : %4s\n",calbum?calbum:album,year);
+	fprintf(stderr,"Comment: %-30s  Genre : %s\n",ccomment?ccomment:comment,genre);
+
+	if (ctitle) free(ctitle);
+	if (cartist) free(cartist);
+	if (calbum) free(calbum);
+	if (ccomment) free(ccomment);
 }
 
 #if 0
diff -dPNur mpg123-0.59r-orig/Makefile mpg123-0.59r-new/Makefile
--- mpg123-0.59r-orig/Makefile	2005-07-19 18:43:57.553939726 +0200
+++ mpg123-0.59r-new/Makefile	2005-07-19 20:00:19.566458888 +0200
@@ -581,12 +581,12 @@
 mpg123-make:
 	@ $(MAKE) CFLAGS='$(CFLAGS)' BINNAME=mpg123 mpg123
 
-mpg123: mpg123.o common.o $(OBJECTS) decode_2to1.o decode_4to1.o \
+mpg123: mpg123.o rccpatch.o common.o $(OBJECTS) decode_2to1.o decode_4to1.o \
 		tabinit.o audio.o layer1.o layer2.o layer3.o buffer.o \
 		getlopt.o httpget.o xfermem.o equalizer.o \
 		decode_ntom.o Makefile wav.o readers.o getbits.o \
 		control_generic.o
-	$(CC) $(CFLAGS) $(LDFLAGS)  mpg123.o tabinit.o common.o layer1.o \
+	$(CC) $(CFLAGS) $(LDFLAGS) -lrcc mpg123.o tabinit.o rccpatch.o common.o layer1.o \
 		layer2.o layer3.o audio.o buffer.o decode_2to1.o equalizer.o \
 		decode_4to1.o getlopt.o httpget.o xfermem.o decode_ntom.o \
 		wav.o readers.o getbits.o control_generic.o \
diff -dPNur mpg123-0.59r-orig/mpg123.c mpg123-0.59r-new/mpg123.c
--- mpg123-0.59r-orig/mpg123.c	2005-07-19 18:43:57.558938905 +0200
+++ mpg123-0.59r-new/mpg123.c	2005-07-19 19:27:03.000000000 +0200
@@ -33,6 +33,8 @@
 #include "buffer.h"
 #include "term.h"
 
+#include "rccpatch.h"
+
 #include "version.h"
 
 static void usage(char *dummy);
@@ -904,6 +906,8 @@
 		exit(0);
 	}
 #endif
+	
+	rccPatchInit();
 
 	while ((fname = get_next_file(argc, argv))) {
 		char *dirname, *filename;
@@ -1069,6 +1073,8 @@
         intflag = FALSE;
       }
     }
+    rccPatchFree();
+
 #ifndef NOXFERMEM
     if (param.usebuffer) {
       buffer_end();
diff -dPNur mpg123-0.59r-orig/rccpatch.c mpg123-0.59r-new/rccpatch.c
--- mpg123-0.59r-orig/rccpatch.c	1970-01-01 01:00:00.000000000 +0100
+++ mpg123-0.59r-new/rccpatch.c	2005-07-19 20:00:35.819789685 +0200
@@ -0,0 +1,40 @@
+#include <librcc.h>
+
+#define ID3_CLASS 0
+#define OUT_CLASS 1
+static rcc_class classes[] = {
+    { "id3", RCC_CLASS_STANDARD, NULL, NULL, "ID3 Encoding", 0 },
+    { "out", RCC_CLASS_STANDARD, NULL, NULL, "Output Encoding", 0 },
+    { NULL }
+};
+
+static int rcc_initialized = 0;
+
+void rccPatchFree() {
+    if (rcc_initialized) {
+       rccFree();
+       rcc_initialized = 0;
+    }
+}
+
+void rccPatchInit() {
+    if (rcc_initialized) return;
+    rccInit();
+    rccInitDefaultContext(NULL, 0, 0, classes, 0);
+    rccLoad(NULL, "xmms");
+    rccInitDb4(NULL, NULL, 0);
+    rcc_initialized = 1;
+}
+
+static void rccPatchTryInit() {
+    if (!rcc_initialized) {
+	rccPatchInit();
+	if (rcc_initialized) atexit(rccPatchFree);	
+    }
+}
+
+char *rccPatchRecode(const char *str) {
+    char *res;
+    rccPatchTryInit();
+    return rccRecode(NULL, ID3_CLASS, OUT_CLASS, str);
+}
diff -dPNur mpg123-0.59r-orig/rccpatch.h mpg123-0.59r-new/rccpatch.h
--- mpg123-0.59r-orig/rccpatch.h	1970-01-01 01:00:00.000000000 +0100
+++ mpg123-0.59r-new/rccpatch.h	2005-07-19 18:27:08.390669528 +0200
@@ -0,0 +1,4 @@
+void rccPatchFree();
+void rccPatchInit();
+char *rccPatchRecode(const char *str);
+
