2011-07-24 2 views
4

Je ne suis pas très expérimenté avec la base de données et php et j'ai un problème.Mysql à Php, problèmes avec les lettres allemandes, suédoises, islandaises etc.

J'ai fait une base de données simple phpadmin sur un serveur web avec une table appelée NEWS avec 3 colonnes appelées int ID, text RUBRIK, text ARTICLE. Lorsque j'utilise SELECT * FROM NEWS the result from ID and RUBRIK fonctionne bien, mais le résultat de ARTICLE renvoie "null". Est-ce que quelqu'un sait ce qui ne va pas?

Dans phpmyadmin, il est parfait d'ajouter une colonne avec du texte contenant les lettres suédoises et dans phpmyadmin, il est possible de voir le texte stocké correctement, c'est quand le texte est appelé au php qu'il ne fonctionnera pas.

J'utilise un interaction fichier index.php avec la base de données, car index.php travaille juste pour connecter mon application android avec la base de données la réponse de index.php est print(json_encode($output));

PS, j'ai essayé d'enregistrer le fichier index.php dans Notes MS avec ANSI et UTF-8 codant. Ne fait aucune différence, je l'ai essayé manipuler ma base de données en changeant tous les classements que je peux trouver dans le phpmyadmin entre latin1_general_ci, utf8_general_ci, utf8_general_bin, utf8_swedish etc etc J'ai aussi essayé la commande mysql_query("set names utf8"); qui m'a recommandé d'essayer, à l'aide qui a fait la base de données retourner les lettres dans le similaire à "/&aumi".

J'apprécierais vraiment si quelqu'un pouvait m'aider.

Voici le fichier php.

<?php 
    $con = mysql_connect("mysqlserver","user","passwords"); 

    if(!$con) 
    { 
     die(' funkar ej: ' . mysql_error()); 
    } 

    mysql_select_db("database", $con); 

    $q=mysql_query("SELECT * FROM NEWS"); 

    while($e=mysql_fetch_assoc($q)) 
     $output[]=$e; 

    print(json_encode($output)); 

    mysql_close(); 
?> 

Répondre

0

Essayez encodage dans le php avec utf8_encode (string $data) le codage de chaque $e avec elle.

+0

pas sûr que cela fonctionnera, car $ e est un tableau et 'utf8_encode()' n'acceptera que des chaînes. – Simon

+0

il peut être fait avec un 'for' iterating chaque valeur à l'intérieur du' $ e'. Le point est qu'il a besoin de l'encodage: D –

+0

J'ai changé le code et il est retourné "\ u00e5 \ u00e4 \ u00e4" au lieu de "åäö" –

1

avec json_encode() vous devez utiliser utf8_encode() et vous devez forcer l'utilisation UTF8, juste avant mysql_query(), comme si mysql_query("SET NAMES utf8");

+0

J'ai essayé la mysql_query ("SET NAMES utf8"); mais il n'a pas retourné la lettre suédoise comme "å, ä, ö" il les a renvoyés comme code html quelque chose comme \ & auld, ne me souviens pas de la combinaison exacte mais je pense que c'est le code html pour les lettres. –

+0

oui. Je retourne aussi des lettres suédoises, et la lettre "ö" retournera "\ u00f6" quand vous utiliserez 'json_encode()'. il sera reconverti en "ö" quand vous le décoderez. ** EDIT: ** Je suis sûr que vous le savez, mais utilisez 'var_dump ($ output)' pour vider le tableau et vous verrez les bonnes lettres. – Simon

+0

va essayer de l'utiliser à partir de l'application android. Problèmes de connexion à mon serveur Web pour le moment. –

0

Ne modifiez pas simplement le type de classement, vous devez également modifier le jeu de caractères par défaut pour la table DB. Aussi, DO utilisez 'set names utf8'.

Questions connexes