/** * Sets specified internal encoding configuration variables within the PHP iconv extension. * @param string $type The parameter $type could be: 'iconv_internal_encoding', 'iconv_input_encoding', or 'iconv_output_encoding'. * @param string $encoding (optional) The desired encoding to be set. * @return bool Returns TRUE on success, FALSE on error. * Note: This function is used in the global initialization script for setting these three internal encodings to the platform's character set. * @link http://php.net/manual/en/function.iconv-set-encoding */ function _api_iconv_set_encoding($type, $encoding = null) { static $iconv_internal_encoding = null; static $iconv_input_encoding = null; static $iconv_output_encoding = null; if (!ICONV_INSTALLED) { return false; } switch ($type) { case 'iconv_internal_encoding': if (empty($encoding)) { if (is_null($iconv_internal_encoding)) { $iconv_internal_encoding = @iconv_get_encoding($type); } return $iconv_internal_encoding; } if (_api_iconv_supports($encoding)) { if (@iconv_set_encoding($type, $encoding)) { $iconv_internal_encoding = $encoding; return true; } return false; } return false; case 'iconv_input_encoding': if (empty($encoding)) { if (is_null($iconv_input_encoding)) { $iconv_input_encoding = @iconv_get_encoding($type); } return $iconv_input_encoding; } if (_api_iconv_supports($encoding)) { if (@iconv_set_encoding($type, $encoding)) { $iconv_input_encoding = $encoding; return true; } return false; } return false; case 'iconv_output_encoding': if (empty($encoding)) { if (is_null($iconv_output_encoding)) { $iconv_output_encoding = @iconv_get_encoding($type); } return $iconv_output_encoding; } if (_api_iconv_supports($encoding)) { if (@iconv_set_encoding($type, $encoding)) { $iconv_output_encoding = $encoding; return true; } return false; } return false; } return false; }
/** * Checks whether a specified encoding is supported by this API. * @param string $encoding The specified encoding. * @return bool Returns TRUE when the specified encoding is supported, FALSE othewise. */ function api_is_encoding_supported($encoding) { static $supported = array(); if (!isset($supported[$encoding])) { $supported[$encoding] = _api_mb_supports($encoding) || _api_iconv_supports($encoding) || _api_convert_encoding_supports($encoding); } return $supported[$encoding]; }