Jump to content
Sign in to follow this  
captain_torche

Conversions d'encodage différentes en fonction du serveur

Rate this topic

Recommended Posts

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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).

Share this post


Link to post
Share on other sites

La modif en .htaccess n'a rien changé, mais merci de la piste.

J'ai aussi essayé de triturer le setlocale, sans succès pour l'instant.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Tu peux essayer de faire un utf8_decode() sur les valeurs de ton tab_villes pour voir si ca vient de là

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...