. */ /** * Translate between different character sets, UTF-8, ASCII 7 bit and ASCII 8 bit (iso-8859-1) * * @version 1.0 * @date 2.11.2009 * @author Wim van Ravesteijn * @license http://opensource.org/licenses/gpl-license.php GNU Public License */ abstract class CharSet { /** * Translate UTF8 text to ASCII 7 bit text * * @param string $text in UTF8 * @return string same text but with UTF8 characters translated to ASCII 7 bit */ public static function get_utf8_to_ascii7($text) { return strtr($text, self::get_utf8_to_ascii7_table()); } /** * Translate ASCII 8 bit text to ASCII 7 bit text * * @param string $text in ASCII 8 bit * @return string same text but with ASCII >127 characters translated to ASCII 7 bit */ public static function get_ascii8_to_ascii7($text) { return strtr($text, self::get_ascii8_to_ascii7_table()); } /** * Translate ASCII 8 bit text to UTF8 text * * @param string $text in ASCII 8 bit * @return string same text but with ASCII 8 bit characters translated to UTF8 */ public static function get_ascii8_to_utf8($text) { return strtr($text, self::get_ascii8_to_utf8_table()); } /** * Return a translation table from UTF8 to ASCII 7 bit characters * * @return array array of translated characters (UTF8 character as key, ASCII 7 bit character as value) */ public static function get_utf8_to_ascii7_table() { $r = array(); $r[ chr(195).chr(128) ] = "A"; $r[ chr(195).chr(129) ] = "A"; $r[ chr(195).chr(130) ] = "A"; $r[ chr(195).chr(131) ] = "A"; $r[ chr(195).chr(132) ] = "A"; $r[ chr(195).chr(133) ] = "A"; $r[ chr(195).chr(134) ] = "AE"; $r[ chr(195).chr(135) ] = "C"; $r[ chr(195).chr(136) ] = "E"; $r[ chr(195).chr(137) ] = "E"; $r[ chr(195).chr(138) ] = "E"; $r[ chr(195).chr(139) ] = "E"; $r[ chr(195).chr(140) ] = "I"; $r[ chr(195).chr(141) ] = "I"; $r[ chr(195).chr(142) ] = "I"; $r[ chr(195).chr(143) ] = "I"; $r[ chr(195).chr(144) ] = "D"; $r[ chr(195).chr(145) ] = "N"; $r[ chr(195).chr(146) ] = "O"; $r[ chr(195).chr(147) ] = "O"; $r[ chr(195).chr(148) ] = "O"; $r[ chr(195).chr(149) ] = "O"; $r[ chr(195).chr(150) ] = "O"; $r[ chr(195).chr(151) ] = "x"; $r[ chr(195).chr(152) ] = "O"; $r[ chr(195).chr(153) ] = "U"; $r[ chr(195).chr(154) ] = "U"; $r[ chr(195).chr(155) ] = "U"; $r[ chr(195).chr(156) ] = "U"; $r[ chr(195).chr(157) ] = "Y"; $r[ chr(195).chr(158) ] = ""; $r[ chr(195).chr(159) ] = "ss"; $r[ chr(195).chr(160) ] = "a"; $r[ chr(195).chr(161) ] = "a"; $r[ chr(195).chr(162) ] = "a"; $r[ chr(195).chr(163) ] = "a"; $r[ chr(195).chr(164) ] = "a"; $r[ chr(195).chr(165) ] = "a"; $r[ chr(195).chr(166) ] = "ae"; $r[ chr(195).chr(167) ] = "c"; $r[ chr(195).chr(168) ] = "e"; $r[ chr(195).chr(169) ] = "e"; $r[ chr(195).chr(170) ] = "e"; $r[ chr(195).chr(171) ] = "e"; $r[ chr(195).chr(172) ] = "i"; $r[ chr(195).chr(173) ] = "i"; $r[ chr(195).chr(174) ] = "i"; $r[ chr(195).chr(175) ] = "i"; $r[ chr(195).chr(176) ] = "o"; $r[ chr(195).chr(177) ] = "n"; $r[ chr(195).chr(178) ] = "o"; $r[ chr(195).chr(179) ] = "o"; $r[ chr(195).chr(180) ] = "o"; $r[ chr(195).chr(181) ] = "o"; $r[ chr(195).chr(182) ] = "o"; $r[ chr(195).chr(183) ] = ":"; $r[ chr(195).chr(184) ] = "o"; $r[ chr(195).chr(185) ] = "u"; $r[ chr(195).chr(186) ] = "u"; $r[ chr(195).chr(187) ] = "u"; $r[ chr(195).chr(188) ] = "u"; $r[ chr(195).chr(189) ] = "y"; $r[ chr(195).chr(190) ] = ""; $r[ chr(196).chr(128) ] = "A"; $r[ chr(196).chr(129) ] = "a"; $r[ chr(196).chr(130) ] = "A"; $r[ chr(196).chr(131) ] = "a"; $r[ chr(196).chr(132) ] = "A"; $r[ chr(196).chr(133) ] = "a"; $r[ chr(196).chr(134) ] = "C"; $r[ chr(196).chr(135) ] = "c"; $r[ chr(196).chr(136) ] = "C"; $r[ chr(196).chr(137) ] = "c"; $r[ chr(196).chr(138) ] = "C"; $r[ chr(196).chr(139) ] = "c"; $r[ chr(196).chr(140) ] = "C"; $r[ chr(196).chr(141) ] = "c"; $r[ chr(196).chr(142) ] = "D"; $r[ chr(196).chr(143) ] = "d"; $r[ chr(196).chr(144) ] = "D"; $r[ chr(196).chr(145) ] = "d"; $r[ chr(196).chr(146) ] = "E"; $r[ chr(196).chr(147) ] = "e"; $r[ chr(196).chr(148) ] = "E"; $r[ chr(196).chr(149) ] = "e"; $r[ chr(196).chr(150) ] = "E"; $r[ chr(196).chr(151) ] = "e"; $r[ chr(196).chr(152) ] = "E"; $r[ chr(196).chr(153) ] = "e"; $r[ chr(196).chr(154) ] = "E"; $r[ chr(196).chr(155) ] = "e"; $r[ chr(196).chr(156) ] = "G"; $r[ chr(196).chr(157) ] = "g"; $r[ chr(196).chr(158) ] = "G"; $r[ chr(196).chr(159) ] = "g"; $r[ chr(196).chr(160) ] = "G"; $r[ chr(196).chr(161) ] = "g"; $r[ chr(196).chr(162) ] = "G"; $r[ chr(196).chr(163) ] = "g"; $r[ chr(196).chr(164) ] = "H"; $r[ chr(196).chr(165) ] = "h"; $r[ chr(196).chr(166) ] = "H"; $r[ chr(196).chr(167) ] = "h"; $r[ chr(196).chr(168) ] = "I"; $r[ chr(196).chr(169) ] = "i"; $r[ chr(196).chr(170) ] = "I"; $r[ chr(196).chr(171) ] = "i"; $r[ chr(196).chr(172) ] = "I"; $r[ chr(196).chr(173) ] = "i"; $r[ chr(196).chr(174) ] = "I"; $r[ chr(196).chr(175) ] = "i"; $r[ chr(196).chr(176) ] = "I"; $r[ chr(196).chr(177) ] = "i"; $r[ chr(196).chr(178) ] = "IJ"; $r[ chr(196).chr(179) ] = "ij"; $r[ chr(196).chr(180) ] = "J"; $r[ chr(196).chr(181) ] = "j"; $r[ chr(196).chr(182) ] = "K"; $r[ chr(196).chr(183) ] = "k"; $r[ chr(196).chr(184) ] = "k"; $r[ chr(196).chr(185) ] = "L"; $r[ chr(196).chr(186) ] = "l"; $r[ chr(196).chr(187) ] = "L"; $r[ chr(196).chr(188) ] = "l"; $r[ chr(196).chr(189) ] = "L"; $r[ chr(196).chr(190) ] = "l"; $r[ chr(197).chr(128) ] = "l"; $r[ chr(197).chr(129) ] = "L"; $r[ chr(197).chr(130) ] = "l"; $r[ chr(197).chr(131) ] = "N"; $r[ chr(197).chr(132) ] = "n"; $r[ chr(197).chr(133) ] = "N"; $r[ chr(197).chr(134) ] = "n"; $r[ chr(197).chr(135) ] = "N"; $r[ chr(197).chr(136) ] = "n"; $r[ chr(197).chr(137) ] = "n"; $r[ chr(197).chr(138) ] = "n"; $r[ chr(197).chr(139) ] = "n"; $r[ chr(197).chr(140) ] = "O"; $r[ chr(197).chr(141) ] = "o"; $r[ chr(197).chr(142) ] = "O"; $r[ chr(197).chr(143) ] = "o"; $r[ chr(197).chr(144) ] = "O"; $r[ chr(197).chr(145) ] = "o"; $r[ chr(197).chr(146) ] = "OE"; $r[ chr(197).chr(147) ] = "oe"; $r[ chr(197).chr(148) ] = "R"; $r[ chr(197).chr(149) ] = "r"; $r[ chr(197).chr(150) ] = "R"; $r[ chr(197).chr(151) ] = "r"; $r[ chr(197).chr(152) ] = "R"; $r[ chr(197).chr(153) ] = "r"; $r[ chr(197).chr(154) ] = "S"; $r[ chr(197).chr(155) ] = "s"; $r[ chr(197).chr(156) ] = "S"; $r[ chr(197).chr(157) ] = "s"; $r[ chr(197).chr(158) ] = "S"; $r[ chr(197).chr(159) ] = "s"; $r[ chr(197).chr(160) ] = "S"; $r[ chr(197).chr(161) ] = "s"; $r[ chr(197).chr(162) ] = "T"; $r[ chr(197).chr(163) ] = "t"; $r[ chr(197).chr(164) ] = "T"; $r[ chr(197).chr(165) ] = "t"; $r[ chr(197).chr(166) ] = "T"; $r[ chr(197).chr(167) ] = "t"; $r[ chr(197).chr(168) ] = "U"; $r[ chr(197).chr(169) ] = "u"; $r[ chr(197).chr(170) ] = "U"; $r[ chr(197).chr(171) ] = "u"; $r[ chr(197).chr(172) ] = "U"; $r[ chr(197).chr(173) ] = "u"; $r[ chr(197).chr(174) ] = "U"; $r[ chr(197).chr(175) ] = "u"; $r[ chr(197).chr(176) ] = "U"; $r[ chr(197).chr(177) ] = "u"; $r[ chr(197).chr(178) ] = "U"; $r[ chr(197).chr(179) ] = "u"; $r[ chr(197).chr(180) ] = "W"; $r[ chr(197).chr(181) ] = "w"; $r[ chr(197).chr(182) ] = "Y"; $r[ chr(197).chr(183) ] = "y"; $r[ chr(197).chr(184) ] = "IJ"; $r[ chr(197).chr(185) ] = "Z"; $r[ chr(197).chr(186) ] = "z"; $r[ chr(197).chr(187) ] = "Z"; $r[ chr(197).chr(188) ] = "z"; $r[ chr(197).chr(189) ] = "Z"; $r[ chr(197).chr(190) ] = "z"; return $r; } /** * Return a translation table from ASCII 8 bit to ASCII 7 bit characters * * @return array array of translated characters (ASCII 8 bit character as key, ASCII 7 bit character as value) */ public static function get_ascii8_to_ascii7_table() { $r = array(); $r[ chr(128) ] = "E"; $r[ chr(129) ] = "oe"; $r[ chr(130) ] = ","; $r[ chr(131) ] = "f"; $r[ chr(132) ] = "\""; $r[ chr(133) ] = "..."; $r[ chr(134) ] = ""; $r[ chr(135) ] = ""; $r[ chr(136) ] = "^"; $r[ chr(137) ] = ""; $r[ chr(138) ] = "S"; $r[ chr(139) ] = "<"; $r[ chr(140) ] = "OE"; $r[ chr(141) ] = ""; $r[ chr(142) ] = "Z"; $r[ chr(143) ] = ""; $r[ chr(144) ] = ""; $r[ chr(145) ] = "'"; $r[ chr(146) ] = "'"; $r[ chr(147) ] = "\""; $r[ chr(148) ] = "\""; $r[ chr(149) ] = "."; $r[ chr(150) ] = "-"; $r[ chr(151) ] = "-"; $r[ chr(152) ] = "~"; $r[ chr(153) ] = "TM"; $r[ chr(154) ] = "s"; $r[ chr(155) ] = ">"; $r[ chr(156) ] = "oe"; $r[ chr(157) ] = ""; $r[ chr(158) ] = "z"; $r[ chr(159) ] = "IJ"; $r[ chr(160) ] = ""; $r[ chr(161) ] = "i"; $r[ chr(162) ] = "c"; $r[ chr(163) ] = "P"; $r[ chr(164) ] = ""; $r[ chr(165) ] = "Y"; $r[ chr(166) ] = "|"; $r[ chr(167) ] = ""; $r[ chr(168) ] = "\""; $r[ chr(169) ] = "(C)"; $r[ chr(170) ] = "a"; $r[ chr(171) ] = "<<"; $r[ chr(172) ] = ""; $r[ chr(173) ] = ""; $r[ chr(174) ] = "(R)"; $r[ chr(175) ] = "-"; $r[ chr(176) ] = "^0"; $r[ chr(177) ] = "+-"; $r[ chr(178) ] = "^2"; $r[ chr(179) ] = "^3"; $r[ chr(180) ] = "`"; $r[ chr(181) ] = "u"; $r[ chr(182) ] = ""; $r[ chr(183) ] = "."; $r[ chr(184) ] = ","; $r[ chr(185) ] = "^1"; $r[ chr(186) ] = "o"; $r[ chr(187) ] = ">>"; $r[ chr(188) ] = "1/4"; $r[ chr(189) ] = "1/2"; $r[ chr(190) ] = "3/4"; $r[ chr(191) ] = "?"; $r[ chr(192) ] = "A"; $r[ chr(193) ] = "A"; $r[ chr(194) ] = "A"; $r[ chr(195) ] = "A"; $r[ chr(196) ] = "A"; $r[ chr(197) ] = "A"; $r[ chr(198) ] = "AE"; $r[ chr(199) ] = "C"; $r[ chr(200) ] = "E"; $r[ chr(201) ] = "E"; $r[ chr(202) ] = "E"; $r[ chr(203) ] = "E"; $r[ chr(204) ] = "I"; $r[ chr(205) ] = "I"; $r[ chr(206) ] = "I"; $r[ chr(207) ] = "I"; $r[ chr(208) ] = "D"; $r[ chr(209) ] = "N"; $r[ chr(210) ] = "O"; $r[ chr(211) ] = "O"; $r[ chr(212) ] = "O"; $r[ chr(213) ] = "O"; $r[ chr(214) ] = "O"; $r[ chr(215) ] = "x"; $r[ chr(216) ] = "O"; $r[ chr(217) ] = "U"; $r[ chr(218) ] = "U"; $r[ chr(219) ] = "U"; $r[ chr(220) ] = "U"; $r[ chr(221) ] = "Y"; $r[ chr(222) ] = ""; $r[ chr(223) ] = "ss"; $r[ chr(224) ] = "a"; $r[ chr(225) ] = "a"; $r[ chr(226) ] = "a"; $r[ chr(227) ] = "a"; $r[ chr(228) ] = "a"; $r[ chr(229) ] = "a"; $r[ chr(230) ] = "ae"; $r[ chr(231) ] = "c"; $r[ chr(232) ] = "e"; $r[ chr(233) ] = "e"; $r[ chr(234) ] = "e"; $r[ chr(235) ] = "e"; $r[ chr(236) ] = "i"; $r[ chr(237) ] = "i"; $r[ chr(238) ] = "i"; $r[ chr(239) ] = "i"; $r[ chr(240) ] = "o"; $r[ chr(241) ] = "n"; $r[ chr(242) ] = "o"; $r[ chr(243) ] = "o"; $r[ chr(244) ] = "o"; $r[ chr(245) ] = "o"; $r[ chr(246) ] = "o"; $r[ chr(247) ] = ":"; $r[ chr(248) ] = "o"; $r[ chr(249) ] = "u"; $r[ chr(250) ] = "u"; $r[ chr(251) ] = "u"; $r[ chr(252) ] = "u"; $r[ chr(253) ] = "y"; $r[ chr(254) ] = ""; $r[ chr(255) ] = "ij"; return $r; } /** * Return a translation table from ASCII 8 bit to UTF8 characters * * @return array array of translated characters (ASCII 8 bit character as key, UTF8 character as value) */ public static function get_ascii8_to_utf8_table() { $r = array(); $r[ chr(128) ] = chr(226).chr(130).chr(172); $r[ chr(129) ] = chr(194).chr(129); $r[ chr(130) ] = chr(226).chr(128).chr(154); $r[ chr(131) ] = chr(198).chr(146); $r[ chr(132) ] = chr(226).chr(128).chr(158); $r[ chr(133) ] = chr(226).chr(128).chr(166); $r[ chr(134) ] = chr(226).chr(128).chr(160); $r[ chr(135) ] = chr(226).chr(128).chr(161); $r[ chr(136) ] = chr(203).chr(134); $r[ chr(137) ] = chr(226).chr(128).chr(176); $r[ chr(138) ] = chr(197).chr(160); $r[ chr(139) ] = chr(226).chr(128).chr(185); $r[ chr(140) ] = chr(197).chr(146); $r[ chr(141) ] = chr(194).chr(141); $r[ chr(142) ] = chr(197).chr(189); $r[ chr(143) ] = chr(194).chr(143); $r[ chr(144) ] = chr(194).chr(144); $r[ chr(145) ] = chr(226).chr(128).chr(152); $r[ chr(146) ] = chr(226).chr(128).chr(153); $r[ chr(147) ] = chr(226).chr(128).chr(156); $r[ chr(148) ] = chr(226).chr(128).chr(157); $r[ chr(149) ] = chr(226).chr(128).chr(162); $r[ chr(150) ] = chr(226).chr(128).chr(147); $r[ chr(151) ] = chr(226).chr(128).chr(148); $r[ chr(152) ] = chr(203).chr(156); $r[ chr(153) ] = chr(226).chr(132).chr(162); $r[ chr(154) ] = chr(197).chr(161); $r[ chr(155) ] = chr(226).chr(128).chr(186); $r[ chr(156) ] = chr(197).chr(147); $r[ chr(157) ] = chr(194).chr(157); $r[ chr(158) ] = chr(197).chr(190); $r[ chr(159) ] = chr(197).chr(184); $r[ chr(160) ] = chr(194).chr(160); $r[ chr(161) ] = chr(194).chr(161); $r[ chr(162) ] = chr(194).chr(162); $r[ chr(163) ] = chr(194).chr(163); $r[ chr(164) ] = chr(194).chr(164); $r[ chr(165) ] = chr(194).chr(165); $r[ chr(166) ] = chr(194).chr(166); $r[ chr(167) ] = chr(194).chr(167); $r[ chr(168) ] = chr(194).chr(168); $r[ chr(169) ] = chr(194).chr(169); $r[ chr(170) ] = chr(194).chr(170); $r[ chr(171) ] = chr(194).chr(171); $r[ chr(172) ] = chr(194).chr(172); $r[ chr(173) ] = chr(194).chr(173); $r[ chr(174) ] = chr(194).chr(174); $r[ chr(175) ] = chr(194).chr(175); $r[ chr(176) ] = chr(194).chr(176); $r[ chr(177) ] = chr(194).chr(177); $r[ chr(178) ] = chr(194).chr(178); $r[ chr(179) ] = chr(194).chr(179); $r[ chr(180) ] = chr(194).chr(180); $r[ chr(181) ] = chr(194).chr(181); $r[ chr(182) ] = chr(194).chr(182); $r[ chr(183) ] = chr(194).chr(183); $r[ chr(184) ] = chr(194).chr(184); $r[ chr(185) ] = chr(194).chr(185); $r[ chr(186) ] = chr(194).chr(186); $r[ chr(187) ] = chr(194).chr(187); $r[ chr(188) ] = chr(194).chr(188); $r[ chr(189) ] = chr(194).chr(189); $r[ chr(190) ] = chr(194).chr(190); $r[ chr(191) ] = chr(194).chr(191); $r[ chr(192) ] = chr(195).chr(128); $r[ chr(193) ] = chr(195).chr(129); $r[ chr(194) ] = chr(195).chr(130); $r[ chr(195) ] = chr(195).chr(131); $r[ chr(196) ] = chr(195).chr(132); $r[ chr(197) ] = chr(195).chr(133); $r[ chr(198) ] = chr(195).chr(134); $r[ chr(199) ] = chr(195).chr(135); $r[ chr(200) ] = chr(195).chr(136); $r[ chr(201) ] = chr(195).chr(137); $r[ chr(202) ] = chr(195).chr(138); $r[ chr(203) ] = chr(195).chr(139); $r[ chr(204) ] = chr(195).chr(140); $r[ chr(205) ] = chr(195).chr(141); $r[ chr(206) ] = chr(195).chr(142); $r[ chr(207) ] = chr(195).chr(143); $r[ chr(208) ] = chr(195).chr(144); $r[ chr(209) ] = chr(195).chr(145); $r[ chr(210) ] = chr(195).chr(146); $r[ chr(211) ] = chr(195).chr(147); $r[ chr(212) ] = chr(195).chr(148); $r[ chr(213) ] = chr(195).chr(149); $r[ chr(214) ] = chr(195).chr(150); $r[ chr(215) ] = chr(195).chr(151); $r[ chr(216) ] = chr(195).chr(152); $r[ chr(217) ] = chr(195).chr(153); $r[ chr(218) ] = chr(195).chr(154); $r[ chr(219) ] = chr(195).chr(155); $r[ chr(220) ] = chr(195).chr(156); $r[ chr(221) ] = chr(195).chr(157); $r[ chr(222) ] = chr(195).chr(158); $r[ chr(223) ] = chr(195).chr(159); $r[ chr(224) ] = chr(195).chr(160); $r[ chr(225) ] = chr(195).chr(161); $r[ chr(226) ] = chr(195).chr(162); $r[ chr(227) ] = chr(195).chr(163); $r[ chr(228) ] = chr(195).chr(164); $r[ chr(229) ] = chr(195).chr(165); $r[ chr(230) ] = chr(195).chr(166); $r[ chr(231) ] = chr(195).chr(167); $r[ chr(232) ] = chr(195).chr(168); $r[ chr(233) ] = chr(195).chr(169); $r[ chr(234) ] = chr(195).chr(170); $r[ chr(235) ] = chr(195).chr(171); $r[ chr(236) ] = chr(195).chr(172); $r[ chr(237) ] = chr(195).chr(173); $r[ chr(238) ] = chr(195).chr(174); $r[ chr(239) ] = chr(195).chr(175); $r[ chr(240) ] = chr(195).chr(176); $r[ chr(241) ] = chr(195).chr(177); $r[ chr(242) ] = chr(195).chr(178); $r[ chr(243) ] = chr(195).chr(179); $r[ chr(244) ] = chr(195).chr(180); $r[ chr(245) ] = chr(195).chr(181); $r[ chr(246) ] = chr(195).chr(182); $r[ chr(247) ] = chr(195).chr(183); $r[ chr(248) ] = chr(195).chr(184); $r[ chr(249) ] = chr(195).chr(185); $r[ chr(250) ] = chr(195).chr(186); $r[ chr(251) ] = chr(195).chr(187); $r[ chr(252) ] = chr(195).chr(188); $r[ chr(253) ] = chr(195).chr(189); $r[ chr(254) ] = chr(195).chr(190); $r[ chr(255) ] = chr(195).chr(191); return $r; } } ?>