summaryrefslogtreecommitdiff
path: root/hugo/libraries/iconv_wrapper.lib.php
diff options
context:
space:
mode:
authorTristan Zur <tzur@web.web.ccwn.org>2014-03-27 22:27:47 +0100
committerTristan Zur <tzur@web.web.ccwn.org>2014-03-27 22:27:47 +0100
commitb62676ca5d3d6f6ba3f019ea3f99722e165a98d8 (patch)
tree86722cb80f07d4569f90088eeaea2fc2f6e2ef94 /hugo/libraries/iconv_wrapper.lib.php
Initial commit of intern.ccwn.org contentsHEADmaster
Diffstat (limited to 'hugo/libraries/iconv_wrapper.lib.php')
-rw-r--r--hugo/libraries/iconv_wrapper.lib.php105
1 files changed, 105 insertions, 0 deletions
diff --git a/hugo/libraries/iconv_wrapper.lib.php b/hugo/libraries/iconv_wrapper.lib.php
new file mode 100644
index 0000000..9bacffa
--- /dev/null
+++ b/hugo/libraries/iconv_wrapper.lib.php
@@ -0,0 +1,105 @@
+<?php
+/* vim: set expandtab sw=4 ts=4 sts=4: */
+/**
+ *
+ * @package PhpMyAdmin
+ */
+if (! defined('PHPMYADMIN')) {
+ exit;
+}
+
+/**
+ * GNU iconv code set to IBM AIX libiconv code set table
+ * Keys of this table should be in lowercase,
+ * and searches should be performed using lowercase!
+ */
+$gnu_iconv_to_aix_iconv_codepage_map = array (
+ // "iso-8859-[1-9]" --> "ISO8859-[1-9]" according to
+ // http://publibn.boulder.ibm.com/doc_link/en_US/
+ // a_doc_lib/libs/basetrf2/setlocale.htm
+ 'iso-8859-1' => 'ISO8859-1',
+ 'iso-8859-2' => 'ISO8859-2',
+ 'iso-8859-3' => 'ISO8859-3',
+ 'iso-8859-4' => 'ISO8859-4',
+ 'iso-8859-5' => 'ISO8859-5',
+ 'iso-8859-6' => 'ISO8859-6',
+ 'iso-8859-7' => 'ISO8859-7',
+ 'iso-8859-8' => 'ISO8859-8',
+ 'iso-8859-9' => 'ISO8859-9',
+
+ // "big5" --> "IBM-eucTW" according to
+ // http://kadesh.cepba.upc.es/mancpp/classref/ref/ITranscoder_DSC.htm
+ 'big5' => 'IBM-eucTW',
+
+ // Other mappings corresponding to the phpMyAdmin dropdown box when using the
+ // charset conversion feature
+ 'euc-jp' => 'IBM-eucJP',
+ 'koi8-r' => 'IBM-eucKR',
+ 'ks_c_5601-1987' => 'KSC5601.1987-0',
+ 'tis-620' => 'TIS-620',
+ 'utf-8' => 'UTF-8'
+);
+
+/**
+ * Wrapper around IBM AIX iconv(), whose character set naming differs
+ * from the GNU version of iconv().
+ *
+ * @param string $in_charset input character set
+ * @param string $out_charset output character set
+ * @param string $str the string to convert
+ *
+ * @return mixed converted string or false on failure
+ *
+ * @access public
+ *
+ */
+function PMA_aix_iconv_wrapper($in_charset, $out_charset, $str)
+{
+
+ global $gnu_iconv_to_aix_iconv_codepage_map;
+
+ // Check for transliteration argument at the end of output character set name
+ $translit_search = strpos(strtolower($out_charset), '//translit');
+ $using_translit = (!($translit_search === false));
+
+ // Extract "plain" output character set name
+ // (without any transliteration argument)
+ $out_charset_plain = ($using_translit
+ ? substr($out_charset, 0, $translit_search)
+ : $out_charset);
+
+ // Transform name of input character set (if found)
+ $in_charset_exisits = array_key_exists(
+ strtolower($in_charset),
+ $gnu_iconv_to_aix_iconv_codepage_map
+ );
+ if ($in_charset_exisits) {
+ $in_charset = $gnu_iconv_to_aix_iconv_codepage_map[strtolower($in_charset)];
+ }
+
+ // Transform name of "plain" output character set (if found)
+ $out_charset_plain_exists = array_key_exists(
+ strtolower($out_charset_plain),
+ $gnu_iconv_to_aix_iconv_codepage_map
+ );
+ if ($out_charset_plain_exists) {
+ $out_charset_plain = $gnu_iconv_to_aix_iconv_codepage_map[
+ strtolower($out_charset_plain)];
+ }
+
+ // Add transliteration argument again (exactly as specified by user) if used
+ // Build the output character set name that we will use
+ $out_charset = ($using_translit
+ ? $out_charset_plain . substr($out_charset, $translit_search)
+ : $out_charset_plain);
+
+ // NOTE: Transliteration not supported; we will use the "plain"
+ // output character set name
+ $out_charset = $out_charset_plain;
+
+ // Call iconv() with the possibly modified parameters
+ $result = iconv($in_charset, $out_charset, $str);
+ return $result;
+} // end of the "PMA_aix_iconv_wrapper()" function
+
+?>