2009-03-20 8 views
4

J'essaie d'afficher les caractères japonais sur une page PHP. Pas de chargement à partir de la base de données, juste stocké dans un fichier de langue et répercuté.Comment afficher les caractères japonais sur une page php?

Je suis dans un scénario bizarre. J'ai la page correctement configurée avec UTF-8 et je teste une page d'exemple sur mon serveur local de WAMP et cela fonctionne.

Au moment où j'ai testé nos serveurs de développement et de production, les caractères ne s'affichent pas correctement.

Cela me conduit à croire alors que c'est un paramètre dans php.ini. Mais je n'ai pas trouvé beaucoup d'informations à ce sujet, donc je ne suis pas vraiment sûr si c'est le problème.

Y at-il quelque chose de fondamental qui me manque?

Merci

Répondre

6

Puisque vous avez dit qu'il travaille dans votre environnement de développement et pas dans votre vie, vous voudrez peut-être vérifier AddDefaultCharset de Apache et réglez-le sur UTF-8, si ce n'est pas déjà fait.

je tends à assurer que les étapes suivantes sont vérifiées

  1. tête PHP est envoyé en UTF-8
  2. balise Meta est en UTF-8 (Content-Type)
  3. Storage a UTF-8
  4. sortie du serveur est défini sur UTF-8

Cela semble fonctionner pour moi. J'espère que cela t'aides.

+0

Merci, je vais Je dois essayer, mais ça a l'air d'être tout ce dont j'ai besoin. – AndreLiem

1

Tout d'abord, je vais assumer la même machine client est utilisé pour les tests. Par conséquent, utilisez Firebug ou votre outil de choix pour vérifier les en-têtes de réponse HTTP sur votre serveur local et comparez-les avec les en-têtes générés par les autres serveurs. Vous trouverez sans aucun doute une différence.

Généralement votre serveur doit être compris un en-tête comme celui-ci dans la réponse:

Content-Type: text/html; charset=UTF-8 

Si les en-têtes sur les deux systèmes semblent à peu près le même, prenez le corps des deux réponses et le charger dans un éditeur hexadécimal et recherchez les différences d'encodage.

6

Vous devez fournir les documents avec la déclaration de codage appropriée dans HTTP header field Content-Type.

En PHP, vous le faites via le header function avant les premières données a été envoyé au client, de façon de préférence comme l'une des premières déclarations:

<?php 
    header('Content-Type: text/html;charset=utf-8'); 

    // the rest 
+0

Merci pour la réponse, vous aviez raison, je nous firebugged – AndreLiem

+0

Malheureusement et c'est exactement le problème. L'amour de ce site. vivent encore dans un monde ISO 8859-1 ... – Gumbo

0

Essayez de suivre (travaillé pour moi, CentOS 6.8, PHP 5,6)

# 1
Apache Config

/etc/httpd/conf/httpd.
AddDefaultCharset conf UTF-8

# 2
PHP Config

/etc/php.ini:
default_charset = "utf-8" >> default_charset = "Shift_JIS"

Remarque: set error_reporting = E_ALL & ~ E_DEPRECATED & ~ E_STRICT

# 3
tête html méta

http-equiv = contenu "content-type" = "text/html; charset = Shift_JIS »