Howto importation xls/csv fichier avec le jeu de caractères unicode en php/mysql?
Je veux donner à l'utilisateur la possibilité d'importer un fichier csv dans mon php/mysql système, mais a rencontré quelques problèmes avec l'encodage lorsque la langue est le russe qui, excel seulement peut stocker en UTF-16 tab-codé de l'onglet fichiers.
Maintenant ma base de données est en latin1, mais je vais le changer que de l'utf-8 comme décrit à la question "un-script-pour-changer-de toutes les tables et les champs-de-la-utf-8-bin-classement-en-mysql"
Mais comment dois-je importer le fichier? et stocker les chaînes?
Dois-je par exemple la traduire de html_entitites?
Je suis en utilisant le fgetcsv
de commande pour obtenir les données du fichier csv.
Mon code ressemble à quelque chose comme cela pour le moment.
file_put_contents($tmpfile, str_replace("\t", ";", file_get_contents($tmpfile)));
$filehandle = fopen($tmpfile,'r');
while (($data = fgetcsv($filehandle, 1000, ";")) !== FALSE) {
$values[] = array(
'id' => $data[0],
'type' => $data[1],
'text' => $data[4],
'desc' => $data[5],
'pdf' => $data[7]);
}
Comme remarque, si je stocke le fichier xls en csv dans excel, j'ai des caractères spéciaux sont remplacés par des '_', donc la seule façon que je peux obtenir de la russie caractères du fichier, enregistrer le fichier dans excel comme des onglets séparés fichier en UTF16 format.
OriginalL'auteur Jesper Grann Laursen | 2009-05-21
Vous devez vous connecter pour publier un commentaire.
D'accord, la solution a été d'exporter le fichier à partir d'excel dans UTF16 unicode texte et ajouter le ';' instaid de '\t' et de convertir utf16 en utf8.
La table dans mysql doit être changé de latin1 pour utf8
Puis le fichier peut être importé comme avant.
Quand je veux exporter les données de la base de données vers un fichier excel, csv version est pas une option. Il doit être fait dans excel html de mode. Où les données sont corrigées par exemple.
urlencode()
ouhtmlentities()
Voici un exemple de code.
OriginalL'auteur Jesper Grann Laursen
Sinon, vous pourriez faire usage de la base de données MySQL commande de chargement. Cette commande permet de spécifier les délimiteurs, jeu de caractères, etc. Le seul inconvénient est que le serveur de charger les données doivent avoir une visibilité directe sur le fichier, ce qui signifie que le fichier doit résider sur un système de fichiers visible et lisible par le serveur de base de données.
J'ai manqué une partie de la documentation, désolé. 🙁 On dirait que MySQL a généralement de la difficulté avec utf16, de sorte que vous pouvez convertir en de utf16 pour de l'utf-8 dans votre code. Comme par une question qui a déjà été posée sur (stackoverflow.com/questions/155514/...), la mb_convert_encoding fonction peut vous aider avec ceci (php.net/manual/en/function.mb-convert-encoding.php)
puis-je vous demander de jeter un oeil à cette question sur un sujet connexe, stackoverflow.com/questions/11116963/...
OriginalL'auteur toluju
Je ne serait pas l'importer à l'aide de PHP. Au lieu de considérer la création d'une table temporaire pour stocker vos données en utilisant LIRE DATA INFILE.
Ensuite, vous pouvez faire ce que vous voulez avec les données de cette table.
puis-je vous demander de jeter un oeil à cette question sur un sujet connexe, stackoverflow.com/questions/11116963/... ?
OriginalL'auteur soulmerge
Bon, ma solution a été AUSSI pour exporter le fichier à partir d'excel dans UTF16 de texte unicode. La seule différence, c'est que je prends mon fichier à l'aide d'un séparateur d'onglets:
OriginalL'auteur zmonteca
J'ai essayé beaucoup de solution, mais le plus simple et rapide de la solution est d'utiliser Navicat
OriginalL'auteur Moxet Jan