2017-09-28 1 views
-2

J'utilise un script PHP CLI sur ma machine locale, qui appelle une API et reçoit une chaîne codée en UTF. Maintenant, cette chaîne est essentiellement un simple mot en portugais, et je peux le voir correctement lorsqu'il est imprimé sur l'écran (terminal). Cependant, sur une machine différente, certains caractères ne sont pas affichés correctement. La question est, quelle option php.ini aurais-je besoin de définir afin de voir la chaîne correctement sur l'autre machine? Je n'ai pas touché mon PHP.ini en ce qui concerne l'encodage et tout fonctionne bien, donc je ne suis pas sûr de ce que j'ai besoin pour permettre à UTF de travailler sur une application phi cli? Edit: ceci ne devrait pas être un problème terminal. Pour être plus précis, l'API renvoie une chaîne (codée en UTF) qui est supposée se trouver dans un tableau. Cependant, PHP émet un avertissement sur une autre machine disant qu'il ne peut pas trouver cette chaîne dans un tableau. C'est la clé qui n'existe pas erreur que je reçois, et la clé ou la chaîne qui s'affiche ne semble pas correcte, c'est le cas.PHP n'affiche pas certains caractères correctement

Il est essentiellement

$stringReturnedFromApi = $apiCall(); 
$this->myArray[$stringReturnedFromApi]; 

cela fonctionne correctement sur mon ordinateur, sur un autre se plaint que la clé n'existe pas, et quand je levais les yeux $stringReturnedFromAp, il ne semble pas UTF codé

+0

L'autre machine utilise-t-elle le même type de terminal? – apokryfos

+0

Oui, à peu près tout est le même attendez PHP. – Zed

+0

Veuillez nous fournir un code minimal pour démontrer le problème. – deceze

Répondre

0

Les autres terminaux doivent être configurés en codage UTF-8. Par exemple, PuTTY doit être informé de l'encodage, ou il utilisera (sur Windows) ANSI si je me souviens bien.

Si l'autre hôte n'est pas sous Windows, vérifiez simplement les paramètres régionaux pour être sûr qu'il s'agit de l'UTF-8. Ce n'est pas de votre côté que l'erreur est, c'est juste un encodage qui est côté client.

Si le résultat est imprimé sur une page Web, assurez-vous que le codage du jeu de caractères est également défini sur UTF8;

+0

J'ai mis à jour les questions avec plus de détails, merci. – Zed

+0

Ajout d'un exemple de code, veuillez jeter un autre coup d'œil – Zed

+0

envoyez-vous explicitement utf8_encode ("value") du serveur, ou envoyez-vous simplement "value" avec un en-tête spécifiant le character_encoding? –

0

Je ne suis pas sûr que c'est en fait un problème PHP.

Sans voir votre script je ne peux rien dire à 100%, mais je devine que le script PHP est en train de sortir correctement le caractère UTF. La raison pour laquelle cela semble étrange est que le terminal ne comprend pas le codage UTF et est incapable d'afficher le caractère.

Vous devrez être un peu plus précis sur les détails de l'application de terminal que vous utilisez pour déterminer où se situe le problème réel. Je doute que ce soit quelque chose que vous pouvez corriger dans le php.ini

+0

S'il vous plaît ... si vous ne faites que deviner, alors mettez votre _guess_ dans un commentaire au lieu d'abuser de la section de réponse .. merci –

+0

J'ai mis à jour les questions avec plus de détails, merci. – Zed

+0

Ajout d'un exemple de code, veuillez jeter un autre coup d'œil – Zed