diff -ruN googlizer-0.3-org/googlizer.c googlizer-0.3/googlizer.c
--- googlizer-0.3-org/googlizer.c	2002-08-23 17:14:08.000000000 +0900
+++ googlizer-0.3/googlizer.c	2011-04-17 20:19:41.982349952 +0900
@@ -28,6 +28,9 @@
 #include <stdlib.h>
 #include <gnome.h>
 
+#define GDK_SELECTION_TYPE_UTF8_STRING	71
+#define GDK_SELECTION_TYPE_COMPOUND_TEXT	114
+
 static void got_selection(GtkWidget *widget, GtkSelectionData *data, gpointer val, char *url)
 {
 	char *p, *tp;
@@ -35,7 +38,7 @@
 	
 	if(data->length<0)
 		exit(1);
-	if(data->type!=GDK_SELECTION_TYPE_STRING)
+	if(data->type!=GDK_SELECTION_TYPE_UTF8_STRING)
 		exit(1);
 	bptr=malloc(3*data->length+strlen(url)+1);
 	if(bptr==NULL)
@@ -49,6 +52,13 @@
 			*tp++='+';
 			p++;
 		}
+		else if((*p & 0xe0) == 0xe0 && (*(p+1) & 0x80) == 0x80 &&  (*(p+2) & 0x80) == 0x80)
+		{
+			*tp=*p;
+			*(tp+1) = *(p+1);
+			*(tp+2) = *(p+2);
+			tp+=3;p+=3;				
+		}
 		else if(*p<' '||*p>'z' || *p=='&' || *p=='%')
 		{
 			sprintf(tp, "%%%02x", *p);
@@ -80,7 +90,7 @@
 {
 	static GdkAtom atomos = GDK_NONE;
 	if(atomos==GDK_NONE)
-		atomos=gdk_atom_intern("STRING", FALSE);
+		atomos=gdk_atom_intern("UTF8_STRING", FALSE);
 	gtk_selection_convert(w, GDK_SELECTION_PRIMARY, atomos, GDK_CURRENT_TIME);
 }