--- wordpress/wp-trackback.php	Tue Sep  5 22:00:19 2006
+++ wp/wp-trackback.php	Wed Sep  6 00:08:27 2006
@@ -6,7 +6,7 @@
 }
 
 function trackback_response($error = 0, $error_message = '') {
-	header('Content-Type: text/xml; charset=' . get_option('blog_charset') );
+	header('Content-Type: text/xml; charset=utf-8' );
 	if ($error) {
 		echo '<?xml version="1.0" encoding="utf-8"?'.">\n";
 		echo "<response>\n";
@@ -34,17 +34,33 @@
 $title     = $_POST['title'];
 $excerpt   = $_POST['excerpt'];
 $blog_name = $_POST['blog_name'];
-$charset   = $_POST['charset'];
+$headers = apache_request_headers();
+$charset = substr (stristr ($headers['Content-Type'], 'charset='), 8);
 
-if ($charset)
+if ($charset) {
 	$charset = strtoupper( trim($charset) );
-else
-	$charset = 'ASCII, UTF-8, ISO-8859-1, JIS, EUC-JP, SJIS';
+} else
+	$charset = 'UTF-8, EUC-KR, JIS, EUC-JP, SJIS, ISO-8859-1';
 
 if ( function_exists('mb_convert_encoding') ) { // For international trackbacks
 	$title     = mb_convert_encoding($title, get_settings('blog_charset'), $charset);
 	$excerpt   = mb_convert_encoding($excerpt, get_settings('blog_charset'), $charset);
 	$blog_name = mb_convert_encoding($blog_name, get_settings('blog_charset'), $charset);
+} else if ( function_exists('iconv') ) {
+	$charsets = explode( ', ', $charset  );
+	$passed = array( 0, 0, 0 );
+
+	for( $i = 0 ; $i < count($charsets); $i++ ){
+		if ( !$passed[0] )
+			$passed[0] = iconv($charsets[$i], get_settings('blog_charset'), $title);
+		if ( !$passed[1] )
+			$passed[1] = iconv($charsets[$i], get_settings('blog_charset'), $excerpt);
+		if ( !$passed[2] )
+			$passed[2] = iconv($charsets[$i], get_settings('blog_charset'), $blog_name);
+	}
+	$title = $passed[0];
+	$excerpt = $passed[1];
+	$blog_name = $passed[2];
 }
 
 if ( is_single() || is_page() ) 

