2009-11-22 7 views
2

J'essaie de convertir ma page Web PHP existante pour utiliser le codage UTF-8.Passer du codage de site Web de ISO-8859-1 à UTF-8

Pour ce faire, je l'ai fait les choses suivantes:

  1. spécifié UTF-8 comme le jeu de caractères dans la balise meta content au début de ma page Web.
  2. remplacez le jeu de caractères par défaut par UTF-8 dans php.ini.
  3. spécifié UTF-8 comme le codage iconv dans le fichier php.ini.
  4. spécifié UTF-8 dans mon fichier .htaccess en utilisant: AddDefaultCharset UTF-8.

Pourtant, après tout cela, quand j'écho mb_internal_encoding(), il montre comme ISO-8859-1. Qu'est-ce que j'oublie ici? Je sais que je pourrais utiliser auto_prepend pour attacher un script qui change l'encodage par défaut en UTF-8, mais j'essaie juste de comprendre ce qui me manque.

Merci

+0

Est-il possible que cette fonction fasse un rapport sur le fichier PHP lui-même? –

Répondre

4

mb_internal_encoding() n'a pas d'effet la sortie de vos scripts par se, il effectue le codage par défaut lors de l'utilisation du multibyte string functions et de la conversion des entrées POST et GET.

simplement mis à

mbstring.internal_encoding='UTF-8' 

dans votre fichier php.ini ou programme avec:

mb_internal_encoding('UTF-8'); 

Parlant des fonctions de MB_, vous aurez besoin de réécrire vos scripts pour utiliser ceux-ci, par exemple mb_strlen() au lieu de strlen.(), etc.

Vérifiez également les en-têtes de type de contenu HTTP qui sont en cours de sortie, bien que ce que vous avez fait soit correct.

Si vous utilisez une base de données, vous devrez également la convertir et spécifier que vous utilisez UTF-8 lors de la connexion.

+0

Merci. que mbstring.internal_encoding (dans le php.ini) fonctionnait parfaitement et était ce que je cherchais, par rapport à la mise en place sur chaque page en utilisant php. – justinl

0

La documentation indique que vous pouvez définir cette variable à l'aide

/* Set internal character encoding to UTF-8 */ 
mb_internal_encoding("UTF-8"); 

qui devrait se débarrasser de votre problème :)

+0

oui Je comprends que je pourrais définir l'encodage en utilisant cette fonction, mais il semble redondant de définir le codage interne sur chaque page, quand je suis sûr qu'il existe un endroit global pour spécifier l'encodage. – justinl