2
/* $Id: iconv_wrapper.lib.php 8629 2006-02-22 08:26:32Z nijel $ */
3
// vim: expandtab sw=4 ts=4 sts=4:
5
# GNU iconv code set to IBM AIX libiconv code set table
6
# Keys of this table should be in lowercase, and searches should be performed using lowercase!
7
$gnu_iconv_to_aix_iconv_codepage_map = array (
8
// "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
9
'iso-8859-1' => 'ISO8859-1',
10
'iso-8859-2' => 'ISO8859-2',
11
'iso-8859-3' => 'ISO8859-3',
12
'iso-8859-4' => 'ISO8859-4',
13
'iso-8859-5' => 'ISO8859-5',
14
'iso-8859-6' => 'ISO8859-6',
15
'iso-8859-7' => 'ISO8859-7',
16
'iso-8859-8' => 'ISO8859-8',
17
'iso-8859-9' => 'ISO8859-9',
19
// "big5" --> "IBM-eucTW" according to http://kadesh.cepba.upc.es/mancpp/classref/ref/ITranscoder_DSC.htm
20
'big5' => 'IBM-eucTW',
22
// Other mappings corresponding to the phpMyAdmin dropdown box when using the AllowAnywhereRecoding feature
23
'euc-jp' => 'IBM-eucJP',
24
'koi8-r' => 'IBM-eucKR',
25
'ks_c_5601-1987' => 'KSC5601.1987-0',
26
'tis-620' => 'TIS-620',
31
* Wrapper around IBM AIX iconv(), whose character set naming differs
32
* from the GNU version of iconv().
34
* @param string input character set
35
* @param string output character set
36
* @param string the string to convert
38
* @return mixed converted string or FALSE on failure
42
* @author bwiberg Björn Wiberg <Bjorn.Wiberg@its.uu.se>
44
function PMA_aix_iconv_wrapper($in_charset, $out_charset, $str) {
46
global $gnu_iconv_to_aix_iconv_codepage_map;
48
// Check for transliteration argument at the end of output character set name
49
$translit_search = strpos(strtolower($out_charset), '//translit');
50
$using_translit = (!($translit_search === FALSE));
52
// Extract "plain" output character set name (without any transliteration argument)
53
$out_charset_plain = ( $using_translit ? substr($out_charset, 0, $translit_search) : $out_charset );
55
// Transform name of input character set (if found)
56
if (array_key_exists(strtolower($in_charset), $gnu_iconv_to_aix_iconv_codepage_map)) {
57
$in_charset = $gnu_iconv_to_aix_iconv_codepage_map[strtolower($in_charset)];
60
// Transform name of "plain" output character set (if found)
61
if (array_key_exists(strtolower($out_charset_plain), $gnu_iconv_to_aix_iconv_codepage_map)) {
62
$out_charset_plain = $gnu_iconv_to_aix_iconv_codepage_map[strtolower($out_charset_plain)];
65
// Add transliteration argument again (exactly as specified by user) if used
66
// Build the output character set name that we will use
67
$out_charset = ( $using_translit ? $out_charset_plain . substr($out_charset, $translit_search) : $out_charset_plain );
69
// NOTE: Transliteration not supported; we will use the "plain" output character set name
70
$out_charset = $out_charset_plain;
72
// Call iconv() with the possibly modified parameters
73
$result = iconv($in_charset, $out_charset, $str);
75
} // end of the "PMA_aix_iconv_wrapper()" function