Masato
[squirrelmail.git] / functions / i18n.php
CommitLineData
59177427 1<?php
1fd97780 2
35586184 3/**
4 * i18n.php
5 *
15e6162e 6 * Copyright (c) 1999-2002 The SquirrelMail Project Team
35586184 7 * Licensed under the GNU GPL. For full terms see the file COPYING.
8 *
9 * This file contains variuos functions that are needed to do
10 * internationalization of SquirrelMail.
11 *
12 * Internally the output character set is used. Other characters are
13 * encoded using Unicode entities according to HTML 4.0.
14 *
15 * $Id$
16 */
17
a2a7852b 18/* Decodes a string to the internal encoding from the given charset */
19function charset_decode ($charset, $string) {
a2a7852b 20
b05c8961 21 $string = charset_decode_japanese($string);
22
a2a7852b 23 /* All HTML special characters are 7 bit and can be replaced first */
24 $string = htmlspecialchars ($string);
25
26 $charset = strtolower($charset);
27
a2a7852b 28 if (ereg('iso-8859-([[:digit:]]+)', $charset, $res)) {
29 if ($res[1] == '1') {
30 $ret = charset_decode_iso_8859_1 ($string);
31 } else if ($res[1] == '2') {
32 $ret = charset_decode_iso_8859_2 ($string);
33 } else if ($res[1] == '7') {
34 $ret = charset_decode_iso_8859_7 ($string);
35 } else if ($res[1] == '15') {
36 $ret = charset_decode_iso_8859_15 ($string);
37 } else {
38 $ret = charset_decode_iso_8859_default ($string);
39 }
40 } else if ($charset == 'ns_4551-1') {
41 $ret = charset_decode_ns_4551_1 ($string);
42 } else if ($charset == 'koi8-r') {
43 $ret = charset_decode_koi8r ($string);
44 } else if ($charset == 'windows-1251') {
45 $ret = charset_decode_koi8r ($string);
46 } else {
47 $ret = $string;
48 }
49 return( $ret );
50}
51
52/*
53 iso-8859-1 is the same as Latin 1 and is normally used
54 in western europe.
55 */
56function charset_decode_iso_8859_1 ($string) {
57 global $default_charset;
13e0c649 58
a2a7852b 59 if (strtolower($default_charset) <> 'iso-8859-1') {
60 /* Only do the slow convert if there are 8-bit characters */
61 if (ereg("[\200-\377]", $string)) {
066c374f 62 $string = str_replace("\201", '&#129;', $string);
63 $string = str_replace("\202", '&#130;', $string);
64 $string = str_replace("\203", '&#131;', $string);
65 $string = str_replace("\204", '&#132;', $string);
66 $string = str_replace("\205", '&#133;', $string);
67 $string = str_replace("\206", '&#134;', $string);
68 $string = str_replace("\207", '&#135;', $string);
69 $string = str_replace("\210", '&#136;', $string);
70 $string = str_replace("\211", '&#137;', $string);
71 $string = str_replace("\212", '&#138;', $string);
72 $string = str_replace("\213", '&#139;', $string);
73 $string = str_replace("\214", '&#140;', $string);
74 $string = str_replace("\215", '&#141;', $string);
75 $string = str_replace("\216", '&#142;', $string);
76 $string = str_replace("\217", '&#143;', $string);
77 $string = str_replace("\220", '&#144;', $string);
78 $string = str_replace("\221", '&#145;', $string);
79 $string = str_replace("\222", '&#146;', $string);
80 $string = str_replace("\223", '&#147;', $string);
81 $string = str_replace("\224", '&#148;', $string);
82 $string = str_replace("\225", '&#149;', $string);
83 $string = str_replace("\226", '&#150;', $string);
84 $string = str_replace("\227", '&#151;', $string);
85 $string = str_replace("\230", '&#152;', $string);
86 $string = str_replace("\231", '&#153;', $string);
87 $string = str_replace("\232", '&#154;', $string);
88 $string = str_replace("\233", '&#155;', $string);
89 $string = str_replace("\234", '&#156;', $string);
90 $string = str_replace("\235", '&#157;', $string);
91 $string = str_replace("\236", '&#158;', $string);
92 $string = str_replace("\237", '&#159;', $string);
93 $string = str_replace("\240", '&#160;', $string);
94 $string = str_replace("\241", '&#161;', $string);
95 $string = str_replace("\242", '&#162;', $string);
96 $string = str_replace("\243", '&#163;', $string);
97 $string = str_replace("\244", '&#164;', $string);
98 $string = str_replace("\245", '&#165;', $string);
99 $string = str_replace("\246", '&#166;', $string);
100 $string = str_replace("\247", '&#167;', $string);
101 $string = str_replace("\250", '&#168;', $string);
102 $string = str_replace("\251", '&#169;', $string);
103 $string = str_replace("\252", '&#170;', $string);
104 $string = str_replace("\253", '&#171;', $string);
105 $string = str_replace("\254", '&#172;', $string);
106 $string = str_replace("\255", '&#173;', $string);
107 $string = str_replace("\256", '&#174;', $string);
108 $string = str_replace("\257", '&#175;', $string);
109 $string = str_replace("\260", '&#176;', $string);
110 $string = str_replace("\261", '&#177;', $string);
111 $string = str_replace("\262", '&#178;', $string);
112 $string = str_replace("\263", '&#179;', $string);
113 $string = str_replace("\264", '&#180;', $string);
114 $string = str_replace("\265", '&#181;', $string);
115 $string = str_replace("\266", '&#182;', $string);
116 $string = str_replace("\267", '&#183;', $string);
117 $string = str_replace("\270", '&#184;', $string);
118 $string = str_replace("\271", '&#185;', $string);
119 $string = str_replace("\272", '&#186;', $string);
120 $string = str_replace("\273", '&#187;', $string);
121 $string = str_replace("\274", '&#188;', $string);
122 $string = str_replace("\275", '&#189;', $string);
123 $string = str_replace("\276", '&#190;', $string);
124 $string = str_replace("\277", '&#191;', $string);
125 $string = str_replace("\300", '&#192;', $string);
126 $string = str_replace("\301", '&#193;', $string);
127 $string = str_replace("\302", '&#194;', $string);
128 $string = str_replace("\303", '&#195;', $string);
129 $string = str_replace("\304", '&#196;', $string);
130 $string = str_replace("\305", '&#197;', $string);
131 $string = str_replace("\306", '&#198;', $string);
132 $string = str_replace("\307", '&#199;', $string);
133 $string = str_replace("\310", '&#200;', $string);
134 $string = str_replace("\311", '&#201;', $string);
135 $string = str_replace("\312", '&#202;', $string);
136 $string = str_replace("\313", '&#203;', $string);
137 $string = str_replace("\314", '&#204;', $string);
138 $string = str_replace("\315", '&#205;', $string);
139 $string = str_replace("\316", '&#206;', $string);
140 $string = str_replace("\317", '&#207;', $string);
141 $string = str_replace("\320", '&#208;', $string);
142 $string = str_replace("\321", '&#209;', $string);
143 $string = str_replace("\322", '&#210;', $string);
144 $string = str_replace("\323", '&#211;', $string);
145 $string = str_replace("\324", '&#212;', $string);
146 $string = str_replace("\325", '&#213;', $string);
147 $string = str_replace("\326", '&#214;', $string);
148 $string = str_replace("\327", '&#215;', $string);
149 $string = str_replace("\330", '&#216;', $string);
150 $string = str_replace("\331", '&#217;', $string);
151 $string = str_replace("\332", '&#218;', $string);
152 $string = str_replace("\333", '&#219;', $string);
153 $string = str_replace("\334", '&#220;', $string);
154 $string = str_replace("\335", '&#221;', $string);
155 $string = str_replace("\336", '&#222;', $string);
156 $string = str_replace("\337", '&#223;', $string);
157 $string = str_replace("\340", '&#224;', $string);
158 $string = str_replace("\341", '&#225;', $string);
159 $string = str_replace("\342", '&#226;', $string);
160 $string = str_replace("\343", '&#227;', $string);
161 $string = str_replace("\344", '&#228;', $string);
162 $string = str_replace("\345", '&#229;', $string);
163 $string = str_replace("\346", '&#230;', $string);
164 $string = str_replace("\347", '&#231;', $string);
165 $string = str_replace("\350", '&#232;', $string);
166 $string = str_replace("\351", '&#233;', $string);
167 $string = str_replace("\352", '&#234;', $string);
168 $string = str_replace("\353", '&#235;', $string);
169 $string = str_replace("\354", '&#236;', $string);
170 $string = str_replace("\355", '&#237;', $string);
171 $string = str_replace("\356", '&#238;', $string);
172 $string = str_replace("\357", '&#239;', $string);
173 $string = str_replace("\360", '&#240;', $string);
174 $string = str_replace("\361", '&#241;', $string);
175 $string = str_replace("\362", '&#242;', $string);
176 $string = str_replace("\363", '&#243;', $string);
177 $string = str_replace("\364", '&#244;', $string);
178 $string = str_replace("\365", '&#245;', $string);
179 $string = str_replace("\366", '&#246;', $string);
180 $string = str_replace("\367", '&#247;', $string);
181 $string = str_replace("\370", '&#248;', $string);
182 $string = str_replace("\371", '&#249;', $string);
183 $string = str_replace("\372", '&#250;', $string);
184 $string = str_replace("\373", '&#251;', $string);
185 $string = str_replace("\374", '&#252;', $string);
186 $string = str_replace("\375", '&#253;', $string);
187 $string = str_replace("\376", '&#254;', $string);
188 $string = str_replace("\377", '&#255;', $string);
a2a7852b 189 }
190 }
191
192 return ($string);
193}
194
195/* iso-8859-2 is used for some eastern European languages */
196function charset_decode_iso_8859_2 ($string) {
197 global $default_charset;
198
199 if (strtolower($default_charset) == 'iso-8859-2')
200 return $string;
201
202 /* Only do the slow convert if there are 8-bit characters */
203 if (! ereg("[\200-\377]", $string))
204 return $string;
205
206 /* NO-BREAK SPACE */
207 $string = str_replace("\240", '&#160;', $string);
208 /* LATIN CAPITAL LETTER A WITH OGONEK */
209 $string = str_replace("\241", '&#260;', $string);
210 /* BREVE */
211 $string = str_replace("\242", '&#728;', $string);
212 // LATIN CAPITAL LETTER L WITH STROKE
213 $string = str_replace("\243", '&#321;', $string);
214 // CURRENCY SIGN
215 $string = str_replace("\244", '&#164;', $string);
216 // LATIN CAPITAL LETTER L WITH CARON
217 $string = str_replace("\245", '&#317;', $string);
218 // LATIN CAPITAL LETTER S WITH ACUTE
219 $string = str_replace("\246", '&#346;', $string);
220 // SECTION SIGN
221 $string = str_replace("\247", '&#167;', $string);
222 // DIAERESIS
223 $string = str_replace("\250", '&#168;', $string);
224 // LATIN CAPITAL LETTER S WITH CARON
225 $string = str_replace("\251", '&#352;', $string);
226 // LATIN CAPITAL LETTER S WITH CEDILLA
227 $string = str_replace("\252", '&#350;', $string);
228 // LATIN CAPITAL LETTER T WITH CARON
229 $string = str_replace("\253", '&#356;', $string);
230 // LATIN CAPITAL LETTER Z WITH ACUTE
231 $string = str_replace("\254", '&#377;', $string);
232 // SOFT HYPHEN
233 $string = str_replace("\255", '&#173;', $string);
234 // LATIN CAPITAL LETTER Z WITH CARON
235 $string = str_replace("\256", '&#381;', $string);
236 // LATIN CAPITAL LETTER Z WITH DOT ABOVE
237 $string = str_replace("\257", '&#379;', $string);
238 // DEGREE SIGN
239 $string = str_replace("\260", '&#176;', $string);
240 // LATIN SMALL LETTER A WITH OGONEK
241 $string = str_replace("\261", '&#261;', $string);
242 // OGONEK
243 $string = str_replace("\262", '&#731;', $string);
244 // LATIN SMALL LETTER L WITH STROKE
245 $string = str_replace("\263", '&#322;', $string);
246 // ACUTE ACCENT
247 $string = str_replace("\264", '&#180;', $string);
248 // LATIN SMALL LETTER L WITH CARON
249 $string = str_replace("\265", '&#318;', $string);
250 // LATIN SMALL LETTER S WITH ACUTE
251 $string = str_replace("\266", '&#347;', $string);
252 // CARON
253 $string = str_replace("\267", '&#711;', $string);
254 // CEDILLA
255 $string = str_replace("\270", '&#184;', $string);
256 // LATIN SMALL LETTER S WITH CARON
257 $string = str_replace("\271", '&#353;', $string);
258 // LATIN SMALL LETTER S WITH CEDILLA
259 $string = str_replace("\272", '&#351;', $string);
260 // LATIN SMALL LETTER T WITH CARON
261 $string = str_replace("\273", '&#357;', $string);
262 // LATIN SMALL LETTER Z WITH ACUTE
263 $string = str_replace("\274", '&#378;', $string);
264 // DOUBLE ACUTE ACCENT
265 $string = str_replace("\275", '&#733;', $string);
266 // LATIN SMALL LETTER Z WITH CARON
267 $string = str_replace("\276", '&#382;', $string);
268 // LATIN SMALL LETTER Z WITH DOT ABOVE
269 $string = str_replace("\277", '&#380;', $string);
270 // LATIN CAPITAL LETTER R WITH ACUTE
271 $string = str_replace("\300", '&#340;', $string);
272 // LATIN CAPITAL LETTER A WITH ACUTE
273 $string = str_replace("\301", '&#193;', $string);
274 // LATIN CAPITAL LETTER A WITH CIRCUMFLEX
275 $string = str_replace("\302", '&#194;', $string);
276 // LATIN CAPITAL LETTER A WITH BREVE
277 $string = str_replace("\303", '&#258;', $string);
278 // LATIN CAPITAL LETTER A WITH DIAERESIS
279 $string = str_replace("\304", '&#196;', $string);
280 // LATIN CAPITAL LETTER L WITH ACUTE
281 $string = str_replace("\305", '&#313;', $string);
282 // LATIN CAPITAL LETTER C WITH ACUTE
283 $string = str_replace("\306", '&#262;', $string);
284 // LATIN CAPITAL LETTER C WITH CEDILLA
285 $string = str_replace("\307", '&#199;', $string);
286 // LATIN CAPITAL LETTER C WITH CARON
287 $string = str_replace("\310", '&#268;', $string);
288 // LATIN CAPITAL LETTER E WITH ACUTE
289 $string = str_replace("\311", '&#201;', $string);
290 // LATIN CAPITAL LETTER E WITH OGONEK
291 $string = str_replace("\312", '&#280;', $string);
292 // LATIN CAPITAL LETTER E WITH DIAERESIS
293 $string = str_replace("\313", '&#203;', $string);
294 // LATIN CAPITAL LETTER E WITH CARON
295 $string = str_replace("\314", '&#282;', $string);
296 // LATIN CAPITAL LETTER I WITH ACUTE
297 $string = str_replace("\315", '&#205;', $string);
298 // LATIN CAPITAL LETTER I WITH CIRCUMFLEX
299 $string = str_replace("\316", '&#206;', $string);
300 // LATIN CAPITAL LETTER D WITH CARON
301 $string = str_replace("\317", '&#270;', $string);
302 // LATIN CAPITAL LETTER D WITH STROKE
303 $string = str_replace("\320", '&#272;', $string);
304 // LATIN CAPITAL LETTER N WITH ACUTE
305 $string = str_replace("\321", '&#323;', $string);
306 // LATIN CAPITAL LETTER N WITH CARON
307 $string = str_replace("\322", '&#327;', $string);
308 // LATIN CAPITAL LETTER O WITH ACUTE
309 $string = str_replace("\323", '&#211;', $string);
310 // LATIN CAPITAL LETTER O WITH CIRCUMFLEX
311 $string = str_replace("\324", '&#212;', $string);
312 // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
313 $string = str_replace("\325", '&#336;', $string);
314 // LATIN CAPITAL LETTER O WITH DIAERESIS
315 $string = str_replace("\326", '&#214;', $string);
316 // MULTIPLICATION SIGN
317 $string = str_replace("\327", '&#215;', $string);
318 // LATIN CAPITAL LETTER R WITH CARON
319 $string = str_replace("\330", '&#344;', $string);
320 // LATIN CAPITAL LETTER U WITH RING ABOVE
321 $string = str_replace("\331", '&#366;', $string);
322 // LATIN CAPITAL LETTER U WITH ACUTE
323 $string = str_replace("\332", '&#218;', $string);
324 // LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
325 $string = str_replace("\333", '&#368;', $string);
326 // LATIN CAPITAL LETTER U WITH DIAERESIS
327 $string = str_replace("\334", '&#220;', $string);
328 // LATIN CAPITAL LETTER Y WITH ACUTE
329 $string = str_replace("\335", '&#221;', $string);
330 // LATIN CAPITAL LETTER T WITH CEDILLA
331 $string = str_replace("\336", '&#354;', $string);
332 // LATIN SMALL LETTER SHARP S
333 $string = str_replace("\337", '&#223;', $string);
334 // LATIN SMALL LETTER R WITH ACUTE
335 $string = str_replace("\340", '&#341;', $string);
336 // LATIN SMALL LETTER A WITH ACUTE
337 $string = str_replace("\341", '&#225;', $string);
338 // LATIN SMALL LETTER A WITH CIRCUMFLEX
339 $string = str_replace("\342", '&#226;', $string);
340 // LATIN SMALL LETTER A WITH BREVE
341 $string = str_replace("\343", '&#259;', $string);
342 // LATIN SMALL LETTER A WITH DIAERESIS
343 $string = str_replace("\344", '&#228;', $string);
344 // LATIN SMALL LETTER L WITH ACUTE
345 $string = str_replace("\345", '&#314;', $string);
346 // LATIN SMALL LETTER C WITH ACUTE
347 $string = str_replace("\346", '&#263;', $string);
348 // LATIN SMALL LETTER C WITH CEDILLA
349 $string = str_replace("\347", '&#231;', $string);
350 // LATIN SMALL LETTER C WITH CARON
351 $string = str_replace("\350", '&#269;', $string);
352 // LATIN SMALL LETTER E WITH ACUTE
353 $string = str_replace("\351", '&#233;', $string);
354 // LATIN SMALL LETTER E WITH OGONEK
355 $string = str_replace("\352", '&#281;', $string);
356 // LATIN SMALL LETTER E WITH DIAERESIS
357 $string = str_replace("\353", '&#235;', $string);
358 // LATIN SMALL LETTER E WITH CARON
359 $string = str_replace("\354", '&#283;', $string);
360 // LATIN SMALL LETTER I WITH ACUTE
361 $string = str_replace("\355", '&#237;', $string);
362 // LATIN SMALL LETTER I WITH CIRCUMFLEX
363 $string = str_replace("\356", '&#238;', $string);
364 // LATIN SMALL LETTER D WITH CARON
365 $string = str_replace("\357", '&#271;', $string);
366 // LATIN SMALL LETTER D WITH STROKE
367 $string = str_replace("\360", '&#273;', $string);
368 // LATIN SMALL LETTER N WITH ACUTE
369 $string = str_replace("\361", '&#324;', $string);
370 // LATIN SMALL LETTER N WITH CARON
371 $string = str_replace("\362", '&#328;', $string);
372 // LATIN SMALL LETTER O WITH ACUTE
373 $string = str_replace("\363", '&#243;', $string);
374 // LATIN SMALL LETTER O WITH CIRCUMFLEX
375 $string = str_replace("\364", '&#244;', $string);
376 // LATIN SMALL LETTER O WITH DOUBLE ACUTE
377 $string = str_replace("\365", '&#337;', $string);
378 // LATIN SMALL LETTER O WITH DIAERESIS
379 $string = str_replace("\366", '&#246;', $string);
380 // DIVISION SIGN
381 $string = str_replace("\367", '&#247;', $string);
382 // LATIN SMALL LETTER R WITH CARON
383 $string = str_replace("\370", '&#345;', $string);
384 // LATIN SMALL LETTER U WITH RING ABOVE
385 $string = str_replace("\371", '&#367;', $string);
386 // LATIN SMALL LETTER U WITH ACUTE
387 $string = str_replace("\372", '&#250;', $string);
388 // LATIN SMALL LETTER U WITH DOUBLE ACUTE
389 $string = str_replace("\373", '&#369;', $string);
390 // LATIN SMALL LETTER U WITH DIAERESIS
391 $string = str_replace("\374", '&#252;', $string);
392 // LATIN SMALL LETTER Y WITH ACUTE
393 $string = str_replace("\375", '&#253;', $string);
394 // LATIN SMALL LETTER T WITH CEDILLA
395 $string = str_replace("\376", '&#355;', $string);
396 // DOT ABOVE
397 $string = str_replace("\377", '&#729;', $string);
398
399 return $string;
400}
401
402/* iso-8859-7 is Greek. */
403function charset_decode_iso_8859_7 ($string) {
404 global $default_charset;
405
406 if (strtolower($default_charset) == 'iso-8859-7') {
407 return $string;
408 }
409
410 /* Only do the slow convert if there are 8-bit characters */
411 if (!ereg("[\200-\377]", $string)) {
412 return $string;
413 }
414
415 /* Some diverse characters in the beginning */
416 $string = str_replace("\240", '&#160;', $string);
417 $string = str_replace("\241", '&#8216;', $string);
418 $string = str_replace("\242", '&#8217;', $string);
419 $string = str_replace("\243", '&#163;', $string);
420 $string = str_replace("\246", '&#166;', $string);
421 $string = str_replace("\247", '&#167;', $string);
422 $string = str_replace("\250", '&#168;', $string);
423 $string = str_replace("\251", '&#169;', $string);
424 $string = str_replace("\253", '&#171;', $string);
425 $string = str_replace("\254", '&#172;', $string);
426 $string = str_replace("\255", '&#173;', $string);
427 $string = str_replace("\257", '&#8213;', $string);
428 $string = str_replace("\260", '&#176;', $string);
429 $string = str_replace("\261", '&#177;', $string);
430 $string = str_replace("\262", '&#178;', $string);
431 $string = str_replace("\263", '&#179;', $string);
432
433 /* Horizontal bar (parentheki pavla) */
434 $string = str_replace ("\257", '&#8213;', $string);
435
436 /*
437 * ISO-8859-7 characters from 11/04 (0xB4) to 11/06 (0xB6)
438 * These are Unicode 900-902
439 */
49c17806 440 $string = preg_replace("/([\264-\266])/","'&#' . (ord(\\1)+720)",$string);
441
a2a7852b 442 /* 11/07 (0xB7) Middle dot is the same in iso-8859-1 */
443 $string = str_replace("\267", '&#183;', $string);
444
445 /*
446 * ISO-8859-7 characters from 11/08 (0xB8) to 11/10 (0xBA)
447 * These are Unicode 900-902
448 */
49c17806 449 $string = preg_replace("/([\270-\272])/","'&#' . (ord(\\1)+720)",$string);
a2a7852b 450
451 /*
452 * 11/11 (0xBB) Right angle quotation mark is the same as in
453 * iso-8859-1
454 */
455 $string = str_replace("\273", '&#187;', $string);
456
457 /* And now the rest of the charset */
49c17806 458 $string = preg_replace("/([\274-\376])/","'&#' . (ord(\\1)+720)",$string);
a2a7852b 459
460 return $string;
461}
462
463/*
464 * iso-8859-15 is Latin 9 and has very much the same use as Latin 1
465 * but has the Euro symbol and some characters needed for French.
466 */
467function charset_decode_iso_8859_15 ($string) {
468 // Euro sign
469 $string = str_replace ("\244", '&#8364;', $string);
470 // Latin capital letter S with caron
84556805 471 $string = str_replace ("\246", '&#352;', $string);
a2a7852b 472 // Latin small letter s with caron
473 $string = str_replace ("\250", '&#353;', $string);
474 // Latin capital letter Z with caron
475 $string = str_replace ("\264", '&#381;', $string);
476 // Latin small letter z with caron
477 $string = str_replace ("\270", '&#382;', $string);
478 // Latin capital ligature OE
479 $string = str_replace ("\274", '&#338;', $string);
480 // Latin small ligature oe
481 $string = str_replace ("\275", '&#339;', $string);
482 // Latin capital letter Y with diaeresis
483 $string = str_replace ("\276", '&#376;', $string);
484
485 return (charset_decode_iso_8859_1($string));
486}
487
84556805 488/* ISO-8859-5 is Cyrillic */
a2a7852b 489function charset_decode_iso_8859_5 ($string) {
490 // Convert to KOI8-R, then return this decoded.
491 $string = convert_cyr_string($string, 'i', 'k');
492 return charset_decode_koi8r($string);
493}
494
495/* Remove all 8 bit characters from all other ISO-8859 character sets */
496function charset_decode_iso_8859_default ($string) {
497 return (strtr($string, "\240\241\242\243\244\245\246\247".
1fd97780 498 "\250\251\252\253\254\255\256\257".
499 "\260\261\262\263\264\265\266\267".
500 "\270\271\272\273\274\275\276\277".
501 "\300\301\302\303\304\305\306\307".
502 "\310\311\312\313\314\315\316\317".
503 "\320\321\322\323\324\325\326\327".
504 "\330\331\332\333\334\335\336\337".
505 "\340\341\342\343\344\345\346\347".
506 "\350\351\352\353\354\355\356\357".
507 "\360\361\362\363\364\365\366\367".
a2a7852b 508 "\370\371\372\373\374\375\376\377",
1fd97780 509 "????????????????????????????????????????".
510 "????????????????????????????????????????".
511 "????????????????????????????????????????".
512 "????????"));
a2a7852b 513
514}
515
516/*
517 * This is the same as ISO-646-NO and is used by some
518 * Microsoft programs when sending Norwegian characters
519 */
520function charset_decode_ns_4551_1 ($string) {
521 /*
522 * These characters are:
523 * Latin capital letter AE
524 * Latin capital letter O with stroke
525 * Latin capital letter A with ring above
526 * and the same as small letters
527 */
528