Aller au contenu

Conversions d'encodage différentes en fonction du serveur


Aller à la solution Solutionné par captain_torche,

Sujets conseillés

Posté

Bonsoir,

Je suis en train de travailler sur la fonction de SStephane qu'il avait fournie ici : http://www.webmaster...105#entry337105, fonction qui transforme une chaîne de caractères en url.

Je voudrais convertir des noms de villes en urls, mais je n'obtiens pas le même résultat en local ou sur mon serveur distant.

Voici le code en question :

<?php
$tab_villes = array(
'Athènes',
'Gdańsk',
'Poznań',
'Wrocław',
'Iaşi'
);

function string_to_url($str) {
$str = preg_replace('~[^\\pL\d]+~u', '-', $str);
$str = trim($str, '-');
$str = iconv('utf-8', 'us-ascii//TRANSLIT', $str);
$str = strtolower($str);
$str = preg_replace('~[^-\w]+~', '', $str);
return $str;
}

foreach($tab_villes as $ville)
echo string_to_url($ville).'<br>';
?>

En local, j'obtiens le résultat attendu, à savoir :

athenes

gdansk

poznan

wroclaw

iasi

Alors que sur mon serveur distant, j'obtiens ceci :

athnes

gdask

pozna

wrocaw

iai

Les caractères accentués (Quels qu'ils soient) sont tout bonnement supprimés.

Il faudrait apparemment que je configure le serveur, mais je n'arrive pas à trouver comment.

Posté

Salut,

Déjà ca ne fait pas de mal de faire un petit

AddDefaultCharset UTF-8

dans ton .htaccess pour être sur que ton serveur renvoie bien des pages en UTF8...

Le respect des encodages est une vraie galère, donc bon courage :P

Posté

Bonjour Captain,

P-e que ca vient de l'encodage par défaut (de php) qui est différent sur ton serveur ?

En local il semble être en UTF-8 mais pas sur ton serveur (ou l'inverse).

  • Solution
Posté

Je crois que je viens de trouver : avec un "simple"

setlocale(LC_CTYPE, 'fr_FR');

Alors que je tentais depuis le début de modifier le paramètre LC_ALL.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...