123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- <?php
- /* vim: set expandtab sw=4 ts=4 sts=4: */
- /**
- * Charset conversion functions.
- *
- * @package PhpMyAdmin
- */
- if (! defined('PHPMYADMIN')) {
- exit;
- }
- define('PMA_CHARSET_NONE', 0);
- define('PMA_CHARSET_ICONV', 1);
- define('PMA_CHARSET_RECODE', 2);
- define('PMA_CHARSET_ICONV_AIX', 3);
- define('PMA_CHARSET_MB', 4);
- if (! isset($GLOBALS['cfg']['RecodingEngine'])) {
- $GLOBALS['cfg']['RecodingEngine'] = '';
- }
- // Finally detect which function we will use:
- if ($GLOBALS['cfg']['RecodingEngine'] == 'iconv') {
- if (@function_exists('iconv')) {
- if ((@stristr(PHP_OS, 'AIX'))
- && (@strcasecmp(ICONV_IMPL, 'unknown') == 0)
- && (@strcasecmp(ICONV_VERSION, 'unknown') == 0)
- ) {
- $PMA_recoding_engine = PMA_CHARSET_ICONV_AIX;
- } else {
- $PMA_recoding_engine = PMA_CHARSET_ICONV;
- }
- } else {
- $PMA_recoding_engine = PMA_CHARSET_NONE;
- PMA_warnMissingExtension('iconv');
- }
- } elseif ($GLOBALS['cfg']['RecodingEngine'] == 'recode') {
- if (@function_exists('recode_string')) {
- $PMA_recoding_engine = PMA_CHARSET_RECODE;
- } else {
- $PMA_recoding_engine = PMA_CHARSET_NONE;
- PMA_warnMissingExtension('recode');
- }
- } elseif ($GLOBALS['cfg']['RecodingEngine'] == 'mb') {
- if (@function_exists('mb_convert_encoding')) {
- $PMA_recoding_engine = PMA_CHARSET_MB;
- } else {
- $PMA_recoding_engine = PMA_CHARSET_NONE;
- PMA_warnMissingExtension('mbstring');
- }
- } elseif ($GLOBALS['cfg']['RecodingEngine'] == 'auto') {
- if (@function_exists('iconv')) {
- if ((@stristr(PHP_OS, 'AIX'))
- && (@strcasecmp(ICONV_IMPL, 'unknown') == 0)
- && (@strcasecmp(ICONV_VERSION, 'unknown') == 0)
- ) {
- $PMA_recoding_engine = PMA_CHARSET_ICONV_AIX;
- } else {
- $PMA_recoding_engine = PMA_CHARSET_ICONV;
- }
- } elseif (@function_exists('recode_string')) {
- $PMA_recoding_engine = PMA_CHARSET_RECODE;
- } elseif (@function_exists('mb_convert_encoding')) {
- $PMA_recoding_engine = PMA_CHARSET_MB;
- } else {
- $PMA_recoding_engine = PMA_CHARSET_NONE;
- }
- } else {
- $PMA_recoding_engine = PMA_CHARSET_NONE;
- }
- /* Load AIX iconv wrapper if needed */
- if ($PMA_recoding_engine == PMA_CHARSET_ICONV_AIX) {
- include_once './libraries/iconv_wrapper.lib.php';
- }
- /**
- * Converts encoding of text according to parameters with detected
- * conversion function.
- *
- * @param string $src_charset source charset
- * @param string $dest_charset target charset
- * @param string $what what to convert
- *
- * @return string converted text
- *
- * @access public
- *
- */
- function PMA_convertString($src_charset, $dest_charset, $what)
- {
- if ($src_charset == $dest_charset) {
- return $what;
- }
- switch ($GLOBALS['PMA_recoding_engine']) {
- case PMA_CHARSET_RECODE:
- return recode_string($src_charset . '..' . $dest_charset, $what);
- case PMA_CHARSET_ICONV:
- return iconv(
- $src_charset, $dest_charset . $GLOBALS['cfg']['IconvExtraParams'], $what
- );
- case PMA_CHARSET_ICONV_AIX:
- return PMA_convertAIXIconv(
- $src_charset, $dest_charset . $GLOBALS['cfg']['IconvExtraParams'], $what
- );
- case PMA_CHARSET_MB:
- return mb_convert_encoding(
- $what, $dest_charset, $src_charset
- );
- default:
- return $what;
- }
- } // end of the "PMA_convertString()" function
- ?>
|