2007 juin 1
ANSI2ASCII : Une fonction PHP pour Convertir de l'ANSI en ASCII
13:49 - Par Nicolas Debras - PHP - Lien permanent
J'ai été récemment confronté à des problèmes de jeux de caractères lors de l'import de données provenant du monde Windows avec un script tournant sur une plate-forme LAMP. Il s'avérait que le fichier à traiter était un fichier CSV comportant des noms de villes allemandes, et qui dit "nom de villes allemandes" dit caractères spéciaux. Par caractères spéciaux, il faut comprendre les ö, ü, ä,ß etc ...
Voici donc une fonction PHP qui permet de convertir les fichiers codés en ANSI vers de l'ASCII :
function ansitoascii($string) {
$asciiarray[] = 142; $ansiarray[] = 196;
$asciiarray[] = 143; $ansiarray[] = 197;
$asciiarray[] = 146; $ansiarray[] = 198;
$asciiarray[] = 128; $ansiarray[] = 199;
$asciiarray[] = 144; $ansiarray[] = 201;
$asciiarray[] = 165; $ansiarray[] = 209;
$asciiarray[] = 153; $ansiarray[] = 214;
$asciiarray[] = 154; $ansiarray[] = 220;
$asciiarray[] = 133; $ansiarray[] = 224;
$asciiarray[] = 160; $ansiarray[] = 225;
$asciiarray[] = 131; $ansiarray[] = 226;
$asciiarray[] = 132; $ansiarray[] = 228;
$asciiarray[] = 134; $ansiarray[] = 229;
$asciiarray[] = 145; $ansiarray[] = 230;
$asciiarray[] = 135; $ansiarray[] = 231;
$asciiarray[] = 138; $ansiarray[] = 232;
$asciiarray[] = 130; $ansiarray[] = 233;
$asciiarray[] = 136; $ansiarray[] = 234;
$asciiarray[] = 137; $ansiarray[] = 235;
$asciiarray[] = 141; $ansiarray[] = 236;
$asciiarray[] = 161; $ansiarray[] = 237;
$asciiarray[] = 140; $ansiarray[] = 238;
$asciiarray[] = 139; $ansiarray[] = 239;
$asciiarray[] = 164; $ansiarray[] = 241;
$asciiarray[] = 149; $ansiarray[] = 242;
$asciiarray[] = 162; $ansiarray[] = 243;
$asciiarray[] = 147; $ansiarray[] = 244;
$asciiarray[] = 148; $ansiarray[] = 246;
$asciiarray[] = 151; $ansiarray[] = 249;
$asciiarray[] = 163; $ansiarray[] = 250;
$asciiarray[] = 150; $ansiarray[] = 251;
$asciiarray[] = 129; $ansiarray[] = 252;
$asciiarray[] = 225; $ansiarray[] = 223;
$i = 0;
while ($i < sizeof ($asciiarray)){
$string = str_replace(chr($asciiarray[$i]), chr($ansiarray[$i]), $string);
$i++;
}
return ($string);
}
Commentaires
salut !
Je suis preneur pour le csv avec les listes allemandes... :)
Le jeudi, août 23 2007, 13:44 par fru
Il est disponible pour quelques heureux auprès de la Deutsche Post
Le jeudi, août 23 2007, 14:34 par Nicolas