function iconv( $in, $out, $string ) {
		if ( strcasecmp( $in, 'x' ) == 0 && strcasecmp( $out, 'utf-8' ) == 0 ) {
			return preg_replace_callback (
				'/([cghjsu]x?)((?:xx)*)(?!x)/i',
				array( $this, 'strrtxuCallback' ), $string	);
		} elseif ( strcasecmp( $in, 'UTF-8' ) == 0 && strcasecmp( $out, 'x' ) == 0 ) {
			# Double Xs only if they follow cxapelutaj literoj.
			return preg_replace_callback(
				'/((?:[cghjsu]|\xc4[\x88\x89\x9c\x9d\xa4\xa5\xb4\xb5]|\xc5[\x9c\x9d\xac\xad])x*)/i',
				array( $this, 'strrtuxCallback' ), $string );
		}
		return parent::iconv( $in, $out, $string );
	}
function iconv( $in, $out, $string ) {
		if ( strcasecmp( $in, 'x' ) == 0 && strcasecmp( $out, 'utf-8' ) == 0 ) {
			return preg_replace_callback (
				'/([cghjsu]x?)((?:xx)*)(?!x)/i',
				array( $this, 'strrtxuCallback' ), $string	);
		} elseif ( strcasecmp( $in, 'UTF-8' ) == 0 && strcasecmp( $out, 'x' ) == 0 ) {
			# Double Xs only if they follow cxapelutaj literoj.
			return preg_replace_callback(
				'/((?:[cghjsu]|\xc4[\x88\x89\x9c\x9d\xa4\xa5\xb4\xb5]|\xc5[\x9c\x9d\xac\xad])x*)/i',
				array( $this, 'strrtuxCallback' ), $string );
		}
		return parent::iconv( $in, $out, $string );
	}
function iconv ( $ in , $ out , $ string ) { if ( strcasecmp ( $ in , 'x' ) == 0 && strcasecmp ( $ out , 'utf-8' ) == 0 ) { return preg_replace_callback ( '/([cghjsu]x?)((?:xx)*)(?!x)/i' , array ( $ this , 'strrtxuCallback' ) , $ string ) ; } elseif ( strcasecmp ( $ in , 'UTF-8' ) == 0 && strcasecmp ( $ out , 'x' ) == 0 ) { # Double Xs only if they follow cxapelutaj literoj. return preg_replace_callback ( '/((?:[cghjsu]|\xc4[\x88\x89\x9c\x9d\xa4\xa5\xb4\xb5]|\xc5[\x9c\x9d\xac\xad])x*)/i' , array ( $ this , 'strrtuxCallback' ) , $ string ) ; } return parent :: iconv ( $ in , $ out , $ string ) ; }
Wrapper for charset conversions.

In most languages, this calls through to standard system iconv(), but
for Esperanto we're also adding a special pseudo-charset to convert
accented characters to/from the ASCII-friendly "X" surrogate coding:

cx = ĉ     cxx = cx
gx = ĝ     gxx = gx
hx = ĥ     hxx = hx
jx = ĵ     jxx = jx
sx = ŝ     sxx = sx
ux = ŭ     uxx = ux
xx = x

http://en.wikipedia.org/wiki/Esperanto_orthography#X-system
http://eo.wikipedia.org/wiki/X-sistemo

X-conversion is applied, in either direction, between "utf-8" and "x" charsets;
this comes into effect when input is run through $wgRequest->getText() and the
$wgEditEncoding is set to 'x'.

In the long run, this should be moved out of here and into the client-side
editor behavior; the original server-side translation system dates to 2002-2003
when many browsers with really bad Unicode support were still in use.

@param string $in input character set
@param string $out output character set
@param string $string text to be converted
@return string
Wrapper for charset conversions .