1: <?php
2: /**
3: * PHPExcel
4: *
5: * Copyright (c) 2006 - 2014 PHPExcel
6: *
7: * This library is free software; you can redistribute it and/or
8: * modify it under the terms of the GNU Lesser General Public
9: * License as published by the Free Software Foundation; either
10: * version 2.1 of the License, or (at your option) any later version.
11: *
12: * This library is distributed in the hope that it will be useful,
13: * but WITHOUT ANY WARRANTY; without even the implied warranty of
14: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15: * Lesser General Public License for more details.
16: *
17: * You should have received a copy of the GNU Lesser General Public
18: * License along with this library; if not, write to the Free Software
19: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20: *
21: * @category PHPExcel
22: * @package PHPExcel_Shared
23: * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
24: * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
25: * @version 1.8.0, 2014-03-02
26: */
27:
28:
29: /**
30: * PHPExcel_Shared_CodePage
31: *
32: * @category PHPExcel
33: * @package PHPExcel_Shared
34: * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
35: */
36: class PHPExcel_Shared_CodePage
37: {
38: /**
39: * Convert Microsoft Code Page Identifier to Code Page Name which iconv
40: * and mbstring understands
41: *
42: * @param integer $codePage Microsoft Code Page Indentifier
43: * @return string Code Page Name
44: * @throws PHPExcel_Exception
45: */
46: public static function NumberToName($codePage = 1252)
47: {
48: switch ($codePage) {
49: case 367: return 'ASCII'; break; // ASCII
50: case 437: return 'CP437'; break; // OEM US
51: case 720: throw new PHPExcel_Exception('Code page 720 not supported.');
52: break; // OEM Arabic
53: case 737: return 'CP737'; break; // OEM Greek
54: case 775: return 'CP775'; break; // OEM Baltic
55: case 850: return 'CP850'; break; // OEM Latin I
56: case 852: return 'CP852'; break; // OEM Latin II (Central European)
57: case 855: return 'CP855'; break; // OEM Cyrillic
58: case 857: return 'CP857'; break; // OEM Turkish
59: case 858: return 'CP858'; break; // OEM Multilingual Latin I with Euro
60: case 860: return 'CP860'; break; // OEM Portugese
61: case 861: return 'CP861'; break; // OEM Icelandic
62: case 862: return 'CP862'; break; // OEM Hebrew
63: case 863: return 'CP863'; break; // OEM Canadian (French)
64: case 864: return 'CP864'; break; // OEM Arabic
65: case 865: return 'CP865'; break; // OEM Nordic
66: case 866: return 'CP866'; break; // OEM Cyrillic (Russian)
67: case 869: return 'CP869'; break; // OEM Greek (Modern)
68: case 874: return 'CP874'; break; // ANSI Thai
69: case 932: return 'CP932'; break; // ANSI Japanese Shift-JIS
70: case 936: return 'CP936'; break; // ANSI Chinese Simplified GBK
71: case 949: return 'CP949'; break; // ANSI Korean (Wansung)
72: case 950: return 'CP950'; break; // ANSI Chinese Traditional BIG5
73: case 1200: return 'UTF-16LE'; break; // UTF-16 (BIFF8)
74: case 1250: return 'CP1250'; break; // ANSI Latin II (Central European)
75: case 1251: return 'CP1251'; break; // ANSI Cyrillic
76: case 0: // CodePage is not always correctly set when the xls file was saved by Apple's Numbers program
77: case 1252: return 'CP1252'; break; // ANSI Latin I (BIFF4-BIFF7)
78: case 1253: return 'CP1253'; break; // ANSI Greek
79: case 1254: return 'CP1254'; break; // ANSI Turkish
80: case 1255: return 'CP1255'; break; // ANSI Hebrew
81: case 1256: return 'CP1256'; break; // ANSI Arabic
82: case 1257: return 'CP1257'; break; // ANSI Baltic
83: case 1258: return 'CP1258'; break; // ANSI Vietnamese
84: case 1361: return 'CP1361'; break; // ANSI Korean (Johab)
85: case 10000: return 'MAC'; break; // Apple Roman
86: case 10006: return 'MACGREEK'; break; // Macintosh Greek
87: case 10007: return 'MACCYRILLIC'; break; // Macintosh Cyrillic
88: case 10008: return 'CP936'; break; // Macintosh - Simplified Chinese (GB 2312)
89: case 10029: return 'MACCENTRALEUROPE'; break; // Macintosh Central Europe
90: case 10079: return 'MACICELAND'; break; // Macintosh Icelandic
91: case 10081: return 'MACTURKISH'; break; // Macintosh Turkish
92: case 32768: return 'MAC'; break; // Apple Roman
93: case 32769: throw new PHPExcel_Exception('Code page 32769 not supported.');
94: break; // ANSI Latin I (BIFF2-BIFF3)
95: case 65000: return 'UTF-7'; break; // Unicode (UTF-7)
96: case 65001: return 'UTF-8'; break; // Unicode (UTF-8)
97: }
98:
99: throw new PHPExcel_Exception('Unknown codepage: ' . $codePage);
100: }
101:
102: }
103: