note 47830 deleted from function.utf8-decode by sean
| From: | sean@php.net | Date: | Wed, 01 Dec 2004 22:11:16 +0000 |
| Subject: | note 47830 deleted from function.utf8-decode by sean | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-81254@lists.php.net to get a copy of this message | ||
Note Submitter: Jay
----
If you got non-encoded letters and encoded letters in same string, utf8_decode() will convert them
wrongly ("ä" goes to "?" and so on).
This will solve the problem:
<?php
function my_utf8_encode($string){
$from = array("\xE2\x82\xAC", "\xC2\x81", "\xE2\x80\x9A",
"\xC6\x92", "\xE2\x80\x9E", "\xE2\x80\xA6", "\xE2\x80\xA0",
"\xE2\x80\xA1", "\xCB\x86", "\xE2\x80\xB0", "\xC5\xA0",
"\xE2\x80\xB9", "\xC5\x92", "\xC2\x8D", "\xC5\xBD",
"\xC2\x8F", "\xC2\x90", "\xE2\x80\x98", "\xE2\x80\x99",
"\xE2\x80\x9C", "\xE2\x80\x9D", "\xE2\x80\xA2",
"\xE2\x80\x93", "\xE2\x80\x94", "\xCB\x9C", "\xE2\x84\xA2",
"\xC5\xA1", "\xE2\x80\xBA", "\xC5\x93", "\xC2\x9D",
"\xC5\xBE", "\xC5\xB8", "\xC2\xA1", "\xC2\xA2",
"\xC2\xA3", "\xC2\xA4", "\xC2\xA5", "\xC2\xA6",
"\xC2\xA7", "\xC2\xA8", "\xC2\xA9", "\xC2\xAA",
"\xC2\xAB", "\xC2\xAC", "\xC2\xAD", "\xC2\xAE",
"\xC2\xAF", "\xC2\xB0", "\xC2\xB1", "\xC2\xB2",
"\xC2\xB3", "\xC2\xB4", "\xC2\xB5", "\xC2\xB6",
"\xC2\xB7", "\xC2\xB8", "\xC2\xB9", "\xC2\xBA",
"\xC2\xBB", "\xC2\xBC", "\xC2\xBD", "\xC2\xBE",
"\xC2\xBF", "\xC3\x80", "\xC3\x81", "\xC3\x82",
"\xC3\x83", "\xC3\x84", "\xC3\x85", "\xC3\x86",
"\xC3\x87", "\xC3\x88", "\xC3\x89", "\xC3\x8A",
"\xC3\x8B", "\xC3\x8C", "\xC3\x8D", "\xC3\x8E",
"\xC3\x8F", "\xC3\x90", "\xC3\x91", "\xC3\x92",
"\xC3\x93", "\xC3\x94", "\xC3\x95", "\xC3\x96",
"\xC3\x97", "\xC3\x98", "\xC3\x99", "\xC3\x9A",
"\xC3\x9B", "\xC3\x9C", "\xC3\x9D", "\xC3\x9E",
"\xC3\x9F", "\xC3\xA0", "\xC3\xA1", "\xC3\xA2",
"\xC3\xA3", "\xC3\xA4", "\xC3\xA5", "\xC3\xA6",
"\xC3\xA7", "\xC3\xA8", "\xC3\xA9", "\xC3\xAA",
"\xC3\xAB", "\xC3\xAC", "\xC3\xAD", "\xC3\xAE",
"\xC3\xAF", "\xC3\xB0", "\xC3\xB1", "\xC3\xB2",
"\xC3\xB3", "\xC3\xB4", "\xC3\xB5", "\xC3\xB6",
"\xC3\xB7", "\xC3\xB8", "\xC3\xB9", "\xC3\xBA",
"\xC3\xBB", "\xC3\xBC", "\xC3\xBD", "\xC3\xBE",
"\xC3\xBF");
$to = array("\x80", "\x81", "\x82", "\x83",
"\x84", "\x85", "\x86", "\x87", "\x88",
"\x89", "\x8A", "\x8B", "\x8C", "\x8D",
"\x8E", "\x8F", "\x90", "\x91", "\x92",
"\x93", "\x94", "\x95", "\x96", "\x97",
"\x98", "\x99", "\x9A", "\x9B", "\x9C",
"\x9D", "\x9E", "\x9F", "\xA1", "\xA2",
"\xA3", "\xA4", "\xA5", "\xA6", "\xA7",
"\xA8", "\xA9", "\xAA", "\xAB", "\xAC",
"\xAD", "\xAE", "\xAF", "\xB0", "\xB1",
"\xB2", "\xB3", "\xB4", "\xB5", "\xB6",
"\xB7", "\xB8", "\xB9", "\xBA", "\xBB",
"\xBC", "\xBD", "\xBE", "\xBF", "\xC0",
"\xC1", "\xC2", "\xC3", "\xC4", "\xC5",
"\xC6", "\xC7", "\xC8", "\xC9", "\xCA",
"\xCB", "\xCC", "\xCD", "\xCE", "\xCF",
"\xD0", "\xD1", "\xD2", "\xD3", "\xD4",
"\xD5", "\xD6", "\xD7", "\xD8", "\xD9",
"\xDA", "\xDB", "\xDC", "\xDD", "\xDE",
"\xDF", "\xE0", "\xE1", "\xE2", "\xE3",
"\xE4", "\xE5", "\xE6", "\xE7", "\xE8",
"\xE9", "\xEA", "\xEB", "\xEC", "\xED",
"\xEE", "\xEF", "\xF0", "\xF1", "\xF2",
"\xF3", "\xF4", "\xF5", "\xF6", "\xF7",
"\xF8", "\xF9", "\xFA", "\xFB", "\xFC",
"\xFD", "\xFE", "\xFF");
return str_replace($from, $to, $string);
}
?>
As u see... it converts only 127 characters (ascii 128 to 255)
Enjoy.
----
Reason: bad code