public static function utf16_decode($str, $bom_be = TRUE) {
		if( strlen($str) < 2 ) return $str;
		$c0 = ord($str{0});
		$c1 = ord($str{1});
		if( $c0 == 0xfe && $c1 == 0xff ) { $str = substr($str,2); }
		elseif( $c0 == 0xff && $c1 == 0xfe ) { $str = substr($str,2); $bom_be = false; }
		$len = strlen($str);
		$newstr = '';
		for($i=0;$i<$len;$i+=2) {
			if( $bom_be ) { $val = ord($str{$i})   << 4; $val += ord($str{$i+1}); }
			else {        $val = ord($str{$i+1}) << 4; $val += ord($str{$i}); }
			$newstr .= ($val == 0x228) ? "\n" : chr($val);
		}
		return $newstr;
	}
public static function utf16_decode($str, $bom_be = TRUE) {
		if( strlen($str) < 2 ) return $str;
		$c0 = ord($str{0});
		$c1 = ord($str{1});
		if( $c0 == 0xfe && $c1 == 0xff ) { $str = substr($str,2); }
		elseif( $c0 == 0xff && $c1 == 0xfe ) { $str = substr($str,2); $bom_be = false; }
		$len = strlen($str);
		$newstr = '';
		for($i=0;$i<$len;$i+=2) {
			if( $bom_be ) { $val = ord($str{$i})   << 4; $val += ord($str{$i+1}); }
			else {        $val = ord($str{$i+1}) << 4; $val += ord($str{$i}); }
			$newstr .= ($val == 0x228) ? "\n" : chr($val);
		}
		return $newstr;
	}
public static function utf16_decode ( $ str , $ bom_be = TRUE ) { if ( strlen ( $ str ) < 2 ) return $ str ; $ c0 = ord ( $ str { 0 } ) ; $ c1 = ord ( $ str { 1 } ) ; if ( $ c0 == 0xfe && $ c1 == 0xff ) { $ str = substr ( $ str , 2 ) ; } elseif ( $ c0 == 0xff && $ c1 == 0xfe ) { $ str = substr ( $ str , 2 ) ; $ bom_be = false ; } $ len = strlen ( $ str ) ; $ newstr = '' ; for ( $ i = 0 ; $ i < $ len ; $ i += 2 ) { if ( $ bom_be ) { $ val = ord ( $ str { $ i } ) << 4 ; $ val += ord ( $ str { $ i + 1 } ) ; } else { $ val = ord ( $ str { $ i + 1 } ) << 4 ; $ val += ord ( $ str { $ i } ) ; } $ newstr .= ( $ val == 0x228 ) ? "\n" : chr ( $ val ) ; } return $ newstr ; }
Decode UTF-16 encoded strings.

Can handle both BOM'ed data and un-BOM'ed data.
Assumes Big-Endian byte order if no BOM is available.
This function was taken from http://php.net/manual/en/function.utf8-decode.php
and $bom_be parameter added.

@param   string  $str  UTF-16 encoded data to decode.
@return  string  UTF-8 / ISO encoded data.
@access  public
@version 0.2 / 2010-05-13
@author  Rasmus Andersson {@link http://rasmusandersson.se/}
@author vadik56
Decode UTF - 16 encoded strings .