2009-08-18 7 views
1

J'ai un script qui extrait une chaîne de la base de données, la divise en mots et écrit les mots dans la base de données. Il fonctionne parfaitement lorsque j'appelle le script via http (en utilisant le serveur web apache). Il fonctionne également pour l'exécuter à partir d'une ligne de commande Windows. Cependant, lorsque j'essaie de l'exécuter à partir de la ligne de commande (shell) dans ubuntu, tous les caractères suédois ÅÄÖ sont remplacés par AAO dans la base de données. Très étrange.Problème utf8 avec les caractères suédois de la ligne de commande

Qu'est-ce que Apache Tell PHP que j'ai besoin de le dire moi-même lors de l'exécution de la ligne de commande?

Répondre

-1

Probablement Ubuntu n'accepte pas ce genre de choses. Essayez d'installer un addon ou plus?

Ce n'est pas vraiment étrange car presque tous les éléments de la ligne de commande ont des problèmes avec certains caractères spéciaux. Es-tu sûr que tu en as vraiment besoin? N'y a-t-il pas un autre moyen de l'écrire? Je ne sais pas parce que je ne suis pas suédois.

Apache et PHP ont tout le soutien pour ce genre de caractères ,,, il n'y a rien à dire d'autre

+0

Je ne entrez rien de la ligne de commande, j'exécute le script juste à partir de là. La raison pour laquelle je veux que cela fonctionne à partir de la ligne de commande est que je veux l'exécuter à partir de cron. – Martin

+0

L'exécution et la saisie vous donnent (presque) la même sortie. –

2

MySQL a various parameters traiter avec encodage client. Définir le jeu de caractères du client sur UTF-8 ou sur le jeu de caractères de la base de données devrait résoudre votre problème.

+0

fait, les deux sont UTF8, mais il ne vous aide pas. – Martin

2

Vous pouvez mettre phpinfo() en haut de votre script, d'imprimer toutes les variables d'environnement, les paramètres de configuration, etc. Comparer la sortie lors de l'exécution à la ligne de commande vs fonctionnant sous apache.

+0

Bon conseil! Il y a beaucoup de différences. Par exemple LANG est réglé sur en_US.UTF-8 sur la ligne de commande. D'apache il a ces: _SERVER ["HTTP_ACCEPT_LANGUAGE"] \t en-US, fr; q = 0,8 _SERVER ["HTTP_ACCEPT_CHARSET"] \t ISO-8859-1, utf-8; q = 0,7, *; q = 0,3 – Martin

0

Souvent, il y aura un fichier php.ini différent qui obtient utilisé lorsqu'il est exécuté via la ligne de commande. Vérifiez pour voir si vous en avez un, et quelles sont les différences.

Questions connexes